【问题标题】:Android ListActivity using SimpleAdapter - Highlight selected item使用 SimpleAdapter 的 Android ListActivity - 突出显示所选项目
【发布时间】:2013-08-21 16:29:39
【问题描述】:

我在我的 ListActivity 中使用 SimpleAdapter,我希望当用户选择一个项目时突出显示该项目。我尝试扩展 SimpleAdapter 并覆盖 getView() 方法:

        public View getView(int position, View convertView, ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        if (position == mItemIndex) {

           convertView.setSelected(true);
           convertView.setPressed(true);
           convertView.setBackgroundColor(Color.parseColor("#FF9912"));

        }
        return view;
        }

但此解决方案无法正常工作。它将背景颜色设置为多于一个列表行。 有谁能帮帮我吗?

【问题讨论】:

    标签: android list listview highlight simpleadapter


    【解决方案1】:

    因此,不是(例如)打开一个新 Activity,您希望通过在用户点击时更改其颜色来突出显示选定的列表项?

    在您的 ListActivity 中,您需要覆盖 onListItemClick()

    @Override
    protected void onListItemClick(ListView list, View view, int position, long id) {
        super.onListItemClick(list, view, position, id);
    
        TextView tv = (TextView)view;
        tv.setTextColor(Color.RED);
        tv.setBackgroundColor(Color.BLUE);
    }
    

    这会将所选条目的颜色更改为红色(文本)和蓝色(背景)。 那是第一步。但是第一个点击的条目会保持这种状态,即使您点击另一个条目也是如此。所以你需要改变它(以某种方式)。

    【讨论】:

      【解决方案2】:

      这是因为 convertView 正在被重复使用,并且您没有更新两种情况下的选定状态(选定/未选定)。当它不是您要选择的项目时,您需要调用setSelected(false) 并重置背景颜色。此外,不需要调用setPressed

      您还应该查看ColorStateList,它允许您定义各种状态的颜色。然后你可以只使用对单个项目选择的内置支持。

      【讨论】:

        猜你喜欢
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        • 2013-04-17
        • 1970-01-01
        • 2011-08-16
        • 2012-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多