我的android应用程序中有一个列表。列表项是自定义对象,根据自定义对象属性,将决定列表项颜色。
现在问题是,当我为这样的列表选择任何项目时,不会显示列表选择器。
如何解决此问题?要设置列表项颜色,我在适配器中使用以下方法。
convertView.setBackgroundColor(Color.LTGRAY
)
这是设置颜色的正确方法吗?如果不是我可以使用的其他东西。
提前致谢。
Swapnil Dalal。
答案 0 :(得分:1)
您可以通过两种方式解决此问题:
1
。为项目视图编写一个选择器,将背景设置为按下状态中的透明,然后将选择器设置为项目视图的背景。
<item android:state_enabled="true"
android:state_pressed="false"
android:drawable="@color/gray" />
<item android:state_enabled="true"
android:state_pressed="true"
android:drawable="@color/transparent" />
2
。删除listselector,只需为itemview编写一个选择器,其中包含不同状态所需的颜色,并将其设置为itemview的背景。
答案 1 :(得分:0)
请添加您的getView方法代码,以便我们为您提供更好的帮助。我们犯的一个常见错误是,我们并不总是为列表视图中的每个项创建新视图,以加载不同的布局列表项。
例如,相同的迭代列表的常用方法:
if(view == null)
{
vi = inflater.inflate(R.layout.fb_list_row, parent, false);
}
对于不同的对象列表视图项,您需要删除if语句;
vi = inflater.inflate(R.layout.fb_list_row, parent, false);
然后对每个列表项进行更改..
希望这会有所帮助。还有更多的代码。
答案 2 :(得分:0)
我得到了这个问题的解决方案,
我为应用程序中的不同对象创建了不同的xml文件。 所以在适配器的getView中,根据条件,我们可以加载其中一个xml。
示例:
`if(true) {
convertView.setBackgroundResource(R.drawable.firstxml);
}
else {
convertView.setBackgroundResource(R.drawable.secondxml);
}`
在这些xmls中,我们可以根据需要指定颜色。
示例:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@color/transperent"/>
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/listview_selector" />
</selector>
谢谢,
Swapnil Dalal。