自定义列表视图适配器行选择

时间:2012-10-25 12:59:40

标签: android listview highlight custom-adapter

我有自定义适配器的listview。在每行中,我有2个textviews和一个按钮。我希望当我点击某个项目突出显示它并保持突出显示时,直到我点击另一个项目。我尝试用列表选择器做但没有成功。然后我试着这样做:

public void onClick(View v) {
    ListView lvItems = context.lvLists;
    for (int i=0; i < lvItems.getChildCount(); i++) 
    {
        lvItems.getChildAt(i).setBackgroundColor(Color.BLACK);        
    }
    v.setBackgroundColor(Color.parseColor("#555555"));

这是列表视图的每一行的onclick。它工作但我看到当我向下滚动时,选择了更多的项目(我没有选择)。解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果要保存ListView项目的某些属性,则不能依赖于Views本身。您必须将它们存储在数据中,以便适配器知道哪个项目的状态已更改。 有关详细信息,请参阅此问题的答案:

Android: Spinners within a ListView loose their values when I add dynamically new ListView entries

答案 1 :(得分:0)

您应该实现视图持有者模式,然后在持有者代码中,您可以拥有一个(布尔)变量来保存该项目的当前状态(突出显示或不突出显示),相应地更改背景颜色。 / p>

答案 2 :(得分:0)

你在Stack Overflow上有很多答案。请尝试检查thisthis以及this

相关问题