更改所选列表项的背景颜色

时间:2014-03-10 02:39:39

标签: android android-arrayadapter listitem

我有一个菜单抽屉,其中包含一个包含自定义ArrayAdapter的列表。我希望更改所选列表项的背景颜色,但我不知道如何。我尝试在适配器的getView中更改它,就像其他人的建议一样,但是没有用,背景颜色仍然没有改变。

这是我试过的:

public View getView(int position, View convertView, ViewGroup parent) {
  View myView = getItem(position).getView(mInflater, convertView);
  if (myView.isSelected())
    myView.setBackgroundColor(Color.BLACK);
  return myView;
}

我应该在哪里做,以及如何做?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用selector完成此操作,如下所示......

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="#FFFFFF" android:state_activated="false"/>
    <item android:drawable="#000000" android:state_pressed="true"/>
    <item android:drawable="#000000" android:state_activated="true"/>

</selector>

然后将此选择器用作列表项布局的background,如下所示......

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="48dp" 
    android:background="@drawable/list_selector">

    ........
    ........

<RelativeLayout/>

答案 1 :(得分:0)

@Override
public View getView (int position, View convertView, ViewGroup parent){
    if(matchPosition.contains(new Integer(position))){
        TextView mvw = (TextView)super.getView(position, convertView, parent);
        mvw.setBackgroundColor(getResources().getColor(R.color.litegreen));
    }
    return super.getView(position, convertView, parent);
}

我在列表中使用上面的条目并且工作正常