【问题标题】:Pass custom list item content to new activity when list item is clicked from a listview从列表视图中单击列表项时,将自定义列表项内容传递给新活动
【发布时间】:2011-03-22 05:40:21
【问题描述】:

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

【问题讨论】:

    标签: android listview


    【解决方案1】:
    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);
    
    
            }});
    

    【讨论】:

    • 太好了,我已经有了以下代码。我被困在 Object o 部分。当我运行调试器时,我可以看到对象拥有的所有值。价值观之一是我想要的。我尝试了这样的 UtilityClass 方式,但是在添加 UtilitClass 类型变量时出现错误。它似乎在 Java 中不存在。我必须自己创建课程吗?请告诉我。非常感谢。
    • 是的,您必须自己创建课程。此类包含列表项的 getter 和 setter 方法。您可以在 link 中查看自定义适配器
    • 要检索它,您可以使用 getIntent().getIntExtra("your_identifier");或 .getStringExtra("your_identifier") 或任何你需要的。
    【解决方案2】:

    如果您已经实现了 onItemClickListner / onItemSelectListner,那么您可以使用适配器从选定位置获取项目,从那里获取回调 onItemClicked()/onItemSelected()。并且可以使用 bundle/extra 将相同的内容发送到另一个活动

    【讨论】:

    • 好的,我有那个方法。我的主要问题是,一旦单击该项目,我就看不到列表视图项目内的内容。我知道物品的位置。该项目内部还有 4 个文本视图。当我调用类似 String test = (String)((Cursor)parent.getItemByPosition(position)).getString(int n) 之类的东西时,我无法从中得到任何东西。这太令人沮丧了。
    • 在这种情况下,最好维护适配器内部的数据并且可以引用。将所有项目添加到一个数据结构中,然后从那里获取所选项目,而不是从视图中获取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2012-11-12
    • 1970-01-01
    相关资源
    最近更新 更多