在Android中为ListView中的每个项目设置标签?

2023-11-27

我有一个 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(使用前将#替换为@)

在Android中为ListView中的每个项目设置标签? 的相关文章

随机推荐