【问题标题】:custom listview adapter row selection自定义列表视图适配器行选择
【发布时间】:2012-10-15 16:06:05
【问题描述】:

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

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。它有效,但我看到当我向下滚动时,选择了更多项目(我没有选择)。解决方案?

【问题讨论】:

    标签: android listview highlight custom-adapter


    【解决方案1】:

    您在 Stack Overflow 上有很多答案。尝试检查this,thisthis

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        您应该实现 view-holder 模式,然后在您的 holder 代码中,您可以有一个(布尔)变量来保存该项目的当前状态(突出显示或未突出显示),相应地更改背景颜色。

        【讨论】:

        • ViewHolder 模式不是关于存储值,它仅用于保存对视图的引用,因此您不必在每次适配器重新使用视图时调用 getViewById。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-21
        • 2011-12-31
        • 2015-03-01
        • 1970-01-01
        相关资源
        最近更新 更多