Android 单击“活动”上的意向项

Android 单击“活动”上的意向项,android,listview,android-intent,android-activity,listactivity,Android,Listview,Android Intent,Android Activity,Listactivity,我有此ListActivity用于显示从我的ListViewActivity获取的项目 public class ListTasksActivity extends ListActivity implements AdapterView.OnItemClickListener { ArrayList<HashMap<String,String>> adapterItems; @Override public void onCreate(Bundle

我有此ListActivity用于显示从我的ListViewActivity获取的项目

public class ListTasksActivity extends ListActivity implements AdapterView.OnItemClickListener {
    ArrayList<HashMap<String,String>> adapterItems;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent i = getIntent();

        ListView lv = getListView();
        lv.setOnItemClickListener(this);

        ArrayList<HashMap<String, String>> taskItems = (ArrayList<HashMap<String, String>>) i.getSerializableExtra("taskItems");
        String[] stringArr = i.getStringArrayExtra("adapterStringArray");
        int[] intArr = i.getIntArrayExtra("adapterIntArray");

        ListAdapter taskadapter = new SimpleAdapter(this, taskItems,
                R.layout.list_item_tasks,
                stringArr,
                intArr);

        setListAdapter(taskadapter);
        adapterItems = taskItems;
        //CustomAdapterTasks customAdapterTasks = new CustomAdapterTasks((ListViewActivity) ListViewActivity.getAppContext(),);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String[] adapterString = new String[] {"location","object_id","task_subject","task_action","object"};
        int[] adapterInt = new int[]  {R.id.singleTaskLocation,R.id.singleTaskInvNumber,R.id.singleTaskSubject,R.id.singleTaskAction,R.id.singleTaskObject};

        //neue Oberflaeche starten
        Intent in = new Intent(this,ListSingleTaskActivity.class);
        in.putExtra("adapterStringArray",adapterString);
        in.putExtra("adapterIntArray",adapterInt);
        in.putExtra("taskItems",adapterItems);

        startActivity(in);
    }
}
是这样的:

ArrayList<HashMap<String, String>> taskItems = (ArrayList<HashMap<String, String>>) i.getSerializableExtra("taskItems");
ArrayList taskItems=(ArrayList)i.getSerializableExtra(“taskItems”);

您正在发送整个数组,这就是为什么在单击“仅发送选定对象”时会看到整个对象,如下所示:

in.putExtra("adapterStringArray",adapterString.get[position]);
in.putExtra("adapterIntArray",adapterInt[position]);
in.putExtra("taskItems",adapterItems.get(position));
对于第二个崩溃问题,请尝试此

HashMap<String, String> hashMap = (HashMap<String, String>)   intent.getSerializableExtra("taskItems");
HashMap HashMap=(HashMap)intent.getSerializableExtra(“任务项”);

您正在发送整个数组,这就是为什么在单击“仅发送选定对象”时会看到整个对象,如下所示:

in.putExtra("adapterStringArray",adapterString.get[position]);
in.putExtra("adapterIntArray",adapterInt[position]);
in.putExtra("taskItems",adapterItems.get(position));
对于第二个崩溃问题,请尝试此

HashMap<String, String> hashMap = (HashMap<String, String>)   intent.getSerializableExtra("taskItems");
HashMap HashMap=(HashMap)intent.getSerializableExtra(“任务项”);

在ListTasksActivity中发送选定数据:

Intent in = new Intent(this,ListSingleTaskActivity.class);

in.putExtra("adapterStringArray",adapterString.get(position));
in.putExtra("adapterIntArray",adapterInt[position]);
in.putExtra("taskItems",adapterItems.get(position));

startActivity(in);

在ListTasksActivity中发送选定数据:

Intent in = new Intent(this,ListSingleTaskActivity.class);

in.putExtra("adapterStringArray",adapterString.get(position));
in.putExtra("adapterIntArray",adapterInt[position]);
in.putExtra("taskItems",adapterItems.get(position));

startActivity(in);

更改您的OnItem单击侦听器,如下所示,然后它将工作

 @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String[] adapterString = new String[] {"location","object_id","task_subject","task_action","object"};
        int[] adapterInt = new int[]  {R.id.singleTaskLocation,R.id.singleTaskInvNumber,R.id.singleTaskSubject,R.id.singleTaskAction,R.id.singleTaskObject};

        //neue Oberflaeche starten
        Intent in = new Intent(this,ListSingleTaskActivity.class);
        in.putExtra("adapterStringArray",adapterString.get(position));
        in.putExtra("adapterIntArray",adapterInt[position]);
        in.putExtra("taskItems",adapterItems.get(position));

        startActivity(in);
    }
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
String[]adapterString=新字符串[]{“位置”、“对象id”、“任务主题”、“任务操作”、“对象”};
int[]adapterInt=new int[]{R.id.singleTaskLocation,R.id.singleTaskInvNumber,R.id.singleTaskSubject,R.id.singleTaskAction,R.id.singleTaskObject};
//新奥伯拉奇星酒店
Intent in=新Intent(此,ListSingleTaskActivity.class);
in.putExtra(“adapterStringArray”,adapterString.get(position));
in.putExtra(“适配器tarray”,适配器[位置]);
in.putExtra(“任务项”,adapterItems.get(position));
星触觉(in);
}

更改您的OnItem,然后单击下面的侦听器,它就会工作

 @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String[] adapterString = new String[] {"location","object_id","task_subject","task_action","object"};
        int[] adapterInt = new int[]  {R.id.singleTaskLocation,R.id.singleTaskInvNumber,R.id.singleTaskSubject,R.id.singleTaskAction,R.id.singleTaskObject};

        //neue Oberflaeche starten
        Intent in = new Intent(this,ListSingleTaskActivity.class);
        in.putExtra("adapterStringArray",adapterString.get(position));
        in.putExtra("adapterIntArray",adapterInt[position]);
        in.putExtra("taskItems",adapterItems.get(position));

        startActivity(in);
    }
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
String[]adapterString=新字符串[]{“位置”、“对象id”、“任务主题”、“任务操作”、“对象”};
int[]adapterInt=new int[]{R.id.singleTaskLocation,R.id.singleTaskInvNumber,R.id.singleTaskSubject,R.id.singleTaskAction,R.id.singleTaskObject};
//新奥伯拉奇星酒店
Intent in=新Intent(此,ListSingleTaskActivity.class);
in.putExtra(“adapterStringArray”,adapterString.get(position));
in.putExtra(“适配器tarray”,适配器[位置]);
in.putExtra(“任务项”,adapterItems.get(position));
星触觉(in);
}

现在,您正在意向中传递完整的数组

实际上,您需要传递已在intent中单击的项的值。 使用此getItemAtPosition(position)并将其发送到in.putExtra中,这样只有您才能获取所选项目


更多信息

现在,您正在意向中传递完整的数组

实际上,您需要传递已在intent中单击的项的值。 使用此getItemAtPosition(position)并将其发送到in.putExtra中,这样只有您才能获取所选项目



更多信息

您正在将整个adapteritems列表发送到新活动。在新的活动中,您也有一个列表视图。我建议您进一步阅读和理解概念。您正在发送完整的列表,只需发送
adapter.get(position)
哦,太简单了,谢谢!为什么要投否决票?@raymondis有些人如果只是不喜欢某个问题而不是评论,那么就投否决票,别担心,这会发生在每个人身上。也就是说,一定要尽量缩短代码示例。好的,谢谢:)您正在向新活动发送整个adapteritems列表。在新的活动中,您也有一个列表视图。我建议您进一步阅读和理解概念。您正在发送完整的列表,只需发送
adapter.get(position)
哦,太简单了,谢谢!为什么要投否决票?@raymondis有些人如果只是不喜欢某个问题而不是评论,那么就投否决票,别担心,这会发生在每个人身上。也就是说,一定要尽量缩短代码示例。好的,谢谢:)adapterString是arrayy字符串[]adapterString=新字符串[]{“位置”、“对象id”、“任务主题”、“任务操作”、“对象”};我又犯了一个错误,我知道。。。你能帮我吗?:)您将任务项发送到哪里?它来自这里:in.putExtra(“taskItems”,adapterItems.get(position))@NehaAgarwal我不知道这是否对我有帮助您正在尝试在第二个活动中获取地图的arraylist,但实际上您正在发送一个Hashmap查看我编辑的answeradapterString是arrayy String[]adapterString=新字符串[]{“位置”、“对象id”、“任务主题”、“任务动作”、“对象”};我又犯了一个错误,我知道。。。你能帮我吗?:)您将任务项发送到哪里?它来自这里:in.putExtra(“taskItems”,adapterItems.get(position))@NehaAgarwal我不知道这对我是否有帮助。你正在第二个活动中尝试获取地图的arraylist,但实际上你发送的只是一个Hashmap,看看我编辑的答案