繁体   English   中英

使用SimpleAdapter的Android ListActivity-突出显示所选项目

[英]Android ListActivity using SimpleAdapter - Highlight selected item

我在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;
        }

但是此解决方案无法正常工作。 它将背景色设置为多个列表行。 可以帮我吗?

这是因为convertView被重用,并且您不会在两种情况下(选定/未选定)都更新选定状态。 如果您不是要选择的项目,则需要调用setSelected(false)并重置背景色。 同样,不需要调用setPressed

您还应该签出ColorStateList ,这将允许您定义各种状态的颜色。 然后,您可以仅使用内置支持选择单个项目。

因此,与其(例如)打开一个新的活动,还想通过用户单击更改其颜色来突出显示所选列表项?

在您的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);
}

这会将所选条目的颜色更改为红色(文本)和蓝色(背景)。 那就是第一步。 但是,即使您单击另一个条目,第一个单击的条目仍然保持这种方式。 因此,您需要(以某种方式)进行更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM