我有一个 ListView,我希望每个项目都附加一个 ID 号(与位置号不同)。我希望这可以通过使用以下方法为 ListView 中的每个视图项设置标签来完成setTag()
当这些视图被创建时。
现在我正在创建这样的 ListView:
final ListView listview = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, names);
listview.setAdapter(adapter);
The names
上面的 ArrayAdapter 参数中的变量是一个 ArrayList,并且此列表中的每个字符串值也有一个唯一的 ID,我想以某种方式链接到该字符串。
有什么方法可以使用标签访问和修改每个视图吗?一个想法是创建我自己的 ArrayAdapter 扩展类并重写 getView() 方法,但我并不真正理解它是如何工作的以及我将如何去做。
或者有没有比像我尝试做的那样添加标签更好的方法来将 ID 与每个字符串链接起来?
创建一个ViewBinder
并将标签设置为ListView
正在填充您需要的任何东西。您可以检查视图的所有属性,以确定哪个标签位于何处,因此这应该是您要寻找的内容。
myAdapter.setViewBinder(new MyViewBinder());
public class MyViewBinder implements ViewBinder {
@Override
public boolean setViewValue(View view, Object data, String text){
//Since it iterates through all the views of the item, change accordingly
if(view instanceof TextView){
((TextView)view).setTag("whatever you want");
}
}
}
我昨天刚刚在另一个问题上使用了完全相同的答案(尽管略有不同)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)