我已经遍布网络,包含stackoverflow,似乎无法获得明确的完整方式
我想创建一个
的ListView1)有交替的颜色(我可以用下面的代码做到这一点) 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中应用备用行颜色”找到here
现在这就是我被困住的地方,我在stackoverflow上看到有人提到这样做,因为它会看到常见的,他们建议将此属性添加到
机器人:listSelector = “@颜色/ LIST_ITEM”
其中list_item.xml类似于
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/transparent" />
.....
</selector>
然后我必须向getView()添加代码以确定我所处的状态 并采取相应的行动。
有没有一个例子让这个工作?谢谢大家 我很乐意发布我的所有用途,如果我可以让它工作。 : - (
答案 0 :(得分:8)
解决方法是使用2个选择器。从适配器中,您可以设置2个选择器,而不是设置2种颜色。
if (position % 2 == 0) {
view.setBackgroundResource(R.drawable.selector_1);
} else {
view.setBackgroundResource(R.drawable.selector_2);
}
selector_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>
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/violet" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/orange" />
</selector>
所以,你有一个双色列表视图和第三种颜色/形状/你想要的所选项目。