我有一个名单显示列表视图的玩家列表。列表视图的每一行都包含按钮,textview和imageview。我怎样才能获得textview的价值?
答案 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)
并将返回的对象强制转换为您的数据类型。