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

使用SimpleAdapter的Android ListActivity-突出显示所选项目,android,list,listview,highlight,simpleadapter,Android,List,Listview,Highlight,Simpleadapter,我在我的ListActivity中使用SimpleAdapter,我希望当用户选择一个项目时突出显示该项目。我尝试了扩展SimpleAdapter并重写getView()方法: 但是这个解决方案不能正常工作。它将背景色设置为多个列表行。 sameone能帮我吗?因此,如果用户单击所选列表项,您希望通过更改其颜色来突出显示该列表项,而不是(例如)打开一个新活动 在您的列表活动中您需要覆盖onListItemClick() 这会将所选条目的颜色更改为红色(文本)和蓝色(背景)。 这是第一步。但是,即

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

但是这个解决方案不能正常工作。它将背景色设置为多个列表行。 sameone能帮我吗?

因此,如果用户单击所选列表项,您希望通过更改其颜色来突出显示该列表项,而不是(例如)打开一个新活动

在您的列表活动中您需要覆盖onListItemClick()

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

因此,您不想(例如)打开一个新活动,而是希望在用户单击时通过更改选定列表项的颜色来突出显示它

在您的列表活动中您需要覆盖onListItemClick()

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

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


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

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

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

        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;
        }
@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);
}