访问listview中的项目

时间:2011-11-08 07:18:55

标签: android listview textview

enter image description here

我有一个名单显示列表视图的玩家列表。列表视图的每一行都包含按钮,textview和imageview。我怎样才能获得textview的价值?

4 个答案:

答案 0 :(得分:0)

我不确定你的问题是什么意思。你想获得textview中的值吗?或者某个位置的textview。要获取textview的值,请使用textview.getText()。要设置值,请使用textview.setText()。

您可以参考this获取列表视图中任意位置的数据。

答案 1 :(得分:0)

是静态列表还是动态生成列表?
如果它是静态的,你可以为xml本身的每个textview分配一个不同的id,然后使用FindViewById来访问它。
如果不是这就是你要做的事情:你显然会有一排并多次显示。因此,多个textview将具有相同的ID。
使用for循环,其中使用FindViewById(记住FindViewByID只会访问带有提到的Id的第一个元素,将其Id设置为其他东西,在下一次迭代中选择下一个textview,将其Id设置为某个东西)然后使用这些新的ID来访问它们,因此您可以访问每个文本视图

答案 2 :(得分:0)

如果您使用自定义适配器类来填充列表视图,那么在您的适配器中,您可以使用HashMap保存键值对,将listitem的位置与数据保存到该textview中。然后您可以轻松地检索它listview的OnItemClickListener。

答案 3 :(得分:0)

根据您的实施细节,我会采用以下方法之一。

选项A. 使用setOnItemClickListener向列表中注册单击侦听器(或者如果您使用ListActivity或ListFragment,只需使用[onListItemClick](http://developer.android.com/reference/android/app /ListActivity.html#onListItemClick%28android.widget.ListView,android.view.View,int,long%29))。 onItemClick在被点击的视图中传递,可用于检索嵌套视图,例如你正在寻找的TextView。

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        TextView tv = (TextView) view.findViewById(R.id.textview);
        String tvText = tv.getText();
    }
}

选项B 假设您从某种数据集合中填充列表,您可以执行与上面类似的操作,但使用传递的position参数作为索引来直接从集合中的对象获取文本;即:

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        SomeObject so = myCollection.get(position);
        String tvText = so.getTextViewText();
    }
}

但是还有很多选择。我有点像创建自己的ArrayAdapter扩展来保存列表中项目视图的模型。这样您也可以调用getItemAtPosition(int position)getItem(int position)并将返回的对象强制转换为您的数据类型。