Android 从列表视图单击列表项时,将自定义列表项内容传递给新活动

Android 从列表视图单击列表项时,将自定义列表项内容传递给新活动,android,listview,Android,Listview,首先,我想知道这是否可行。从本质上说,我有一个listview,它是用自定义列表项视图和自定义适配器以编程方式填充的。这就像一个魅力,但问题是,一旦这个列表被填充,我必须以一种特定的方式对它进行排序。要放入列表的值存储在字符串数组中。问题是,当我对listview排序时,它会更改我认为值将存储在哪里的索引。我想使用列表视图中的某些值启动新活动。这可能吗?我可以从列表项中获取一个字符串,并可以在单击该项时在存储值的数组中查找该字符串。然后,我可以用额外的东西启动一个新的意图,这样我就可以将这个新数

首先,我想知道这是否可行。从本质上说,我有一个listview,它是用自定义列表项视图和自定义适配器以编程方式填充的。这就像一个魅力,但问题是,一旦这个列表被填充,我必须以一种特定的方式对它进行排序。要放入列表的值存储在字符串数组中。问题是,当我对listview排序时,它会更改我认为值将存储在哪里的索引。我想使用列表视图中的某些值启动新活动。这可能吗?我可以从列表项中获取一个字符串,并可以在单击该项时在存储值的数组中查找该字符串。然后,我可以用额外的东西启动一个新的意图,这样我就可以将这个新数据传递给新的活动。那么,是否可以从列表项中提取字符串?

如果您已经实现了onItemClickListner/onItemSelectListner,那么您可以使用适配器从那里获取回调onItemClicked()/onItemSelected(),从所选位置获取项。并且可以使用bundle/extra

lv.setOnItemClickListener(新的OnItemClickListener())将相同的内容发送到另一个活动{
lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3){

    Object o=lv.getItemAtPosition(position);

    UtilityClass u=(UtilityClass)o;
    String s=u.getMyData();
    Intent edit = new Intent(context, AnotherActivity.class);           
                        edit.putExtra("your_identifier", Integer.toString(position));
    startActivity(intent);


        }});
公共单击(适配器视图arg0,视图arg1,内部位置, 长arg3){ 对象o=lv.getItemAtPosition(位置); 实用类u=(实用类)o; 字符串s=u.getMyData(); 意图编辑=新意图(上下文,另一个activity.class); edit.putExtra(“您的_标识符”,Integer.toString(位置)); 星触觉(意向); }});
好的,我有这个方法。我的主要问题是,单击listview项后,我看不到该项中的内容。我知道物品的位置。该项内部还有4个文本视图。当我调用字符串test=(String)((Cursor)parent.getItemByPosition(position)).getString(intn)之类的函数时,我无法从中获得任何信息。这太令人沮丧了。在这种情况下,最好在适配器中维护数据,并且可以引用这些数据。将所有项添加到一个数据结构中,并从那里获取所选项,而不是从视图中获取。我被困在物体的o部分。当我运行调试器时,我可以看到对象持有的所有值。其中一个值就是我想要的。我尝试过这样的UtilityClass方法,但在添加UtilitClass类型变量时出现错误。它在Java中似乎不存在。我必须自己创建类吗?请让我知道。非常感谢。是的,你们必须自己创建课程。此类包含列表项的getter和setter方法。您可以在中看到自定义适配器,使用getIntent().getIntExtra(“您的_标识符”)检索它;或.getStringExtra(“您的_标识符”)或任何您需要的。