android listview替代行颜色,但具有默认光标选择

android listview替代行颜色,但具有默认光标选择,android,listview,colors,row,alternate,Android,Listview,Colors,Row,Alternate,我已经浏览了所有的网页,包括stackoverflow,但似乎无法找到一个清晰完整的方法 我想创建一个列表视图 1) 有交替的颜色(我能用下面的代码做到这一点) 2) 保留android的默认橙色选择行为 为了实现#1,我有一个自定义适配器 扩展ArrayAdapter,然后像这样重写getView public View getView(int position, View convertView, ViewGroup parent) { .... // tableLayout

我已经浏览了所有的网页,包括stackoverflow,但似乎无法找到一个清晰完整的方法

我想创建一个列表视图

1) 有交替的颜色(我能用下面的代码做到这一点) 2) 保留android的默认橙色选择行为

为了实现#1,我有一个自定义适配器 扩展ArrayAdapter,然后像这样重写getView

public View getView(int position,  View convertView,   ViewGroup parent)
{
  ....

  // tableLayoutId is id pointing to each view/row in my list
  View tableLayoutView = view.findViewById(R.id.tableLayoutId); 
  if(tableLayoutView != null)
  {
      int colorPos = position % colors.length;
      tableLayoutView.setBackgroundColor(colors[colorPos]);
  }
}
我的颜色成员变量是

private int[] colors = new int[] { 0x30ffffff, 0x30ff2020, 0x30808080 };
跟随文章“Android–使用SimpleAdapter在ListView中应用替代行颜色”

这就是我被卡住的地方,我在stackoverflow上看到了一些关于这样做的提及,因为这很常见,他们建议将这个属性添加到

android:listSelector=“@color/list\u项目”

其中list_item.xml类似于

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_selected="true"
    android:drawable="@drawable/transparent" />
   .....
 </selector>

.....
然后我必须向getView()添加代码,以确定我处于哪个状态 并据此采取行动

有没有一个例子可以让它发挥作用?谢谢大家
如果我能让它工作的话,我很乐意把我的贴出来供大家使用-(

解决方法是使用2个选择器。从适配器中,您可以设置2个选择器,而不是设置2种颜色

if (position % 2 == 0) {
  view.setBackgroundResource(R.drawable.selector_1);
} else {
  view.setBackgroundResource(R.drawable.selector_2);
}
选择器_1在selector_1.xml中定义如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false"  android:drawable="@color/white" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false"  android:drawable="@color/orange" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false"  android:drawable="@color/violet" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false"  android:drawable="@color/orange" />
</selector>

选择器_2在selector_2.xml中定义如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false"  android:drawable="@color/white" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false"  android:drawable="@color/orange" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false"  android:drawable="@color/violet" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false"  android:drawable="@color/orange" />
</selector>

这样,您就有了一个双色列表视图和一个第三种颜色/形状/所需的任何选定项