android - Intent 项目 onClick to Activity

标签 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 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);
    }
}

如果我点击一个项目然后会发生这种情况:

public class ListSingleTaskActivity extends Activity {
    private static final int CAMERA_PIC_REQUEST = 2500;

    ListView mylistview;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.single_task_layout);

        Intent i = getIntent();

        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.single_task_layout,
                stringArr,
                intArr)
}

我的问题是我想将信息从点击的项目发送到新的 Activity 并显示它们。上述代码的结果是他向我展示了整个项目。不仅仅是点击的那个。 怎么了?

我希望你清楚我的问题是什么。如果缺少某些内容,请评论

编辑:


现在我得到这个错误:

Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.ArrayList
        at de.example.app.ListSingleTaskActivity.onCreate(ListSingleTaskActivity.java:30)

就是这一行:

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

最佳答案

在 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);

关于android - Intent 项目 onClick to Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30371695/

相关文章:

android - 是否有任何 Android 处理程序可以知道平板电脑或手机是否已断开电流?

java - 在 Android 中使用来自 Google Places API 的 JSON 响应

OSX 10.6 上 eclipse Rhostudio 的 Java 路径

android - IPC调用过程中可能出现死锁

java - 在 Android 设备上访问 SD 卡上的 PDF 文件

android - 如何将数据从 fragment 发送到另一个 Activity ?

android - 从网页调用 Android Intent ?

wpf - ListView 组标题显示多次

c++ - Qt:将 C++ 中的列表连接到 QML 中的 ListView

listview - 如何从ListView自定义适配器中的微调器中获取所有值