Android:ListView上的项目在单击后更改背景色
我对ListView有问题。我有一个带有一些项目的列表视图,例如,两个有绿色背景,其余的有白色。当我点击项目时,其余项目的颜色变为白色 例1:Android:ListView上的项目在单击后更改背景色,android,listview,Android,Listview,我对ListView有问题。我有一个带有一些项目的列表视图,例如,两个有绿色背景,其余的有白色。当我点击项目时,其余项目的颜色变为白色 例1: Item1(white) Item2(green) Item3(white) Item4(green) 当我点击Item3时,这看起来像: Item1(green) Item2(white) Item3(green) Item4(white) Item1(white) Item2(white) Item3(green) Item4(white) 例
Item1(white)
Item2(green)
Item3(white)
Item4(green)
当我点击Item3时,这看起来像:
Item1(green)
Item2(white)
Item3(green)
Item4(white)
Item1(white)
Item2(white)
Item3(green)
Item4(white)
例2:
Item1(white)
Item2(green)
Item3(white)
Item4(white)
当我点击Item3时,这看起来像:
Item1(green)
Item2(white)
Item3(green)
Item4(white)
Item1(white)
Item2(white)
Item3(green)
Item4(white)
我能做些什么来修复它
编辑:
这是我的密码
onCreate方法:
protected void onCreate(Bundle savedInstanceState) {
System.out.println("onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_paired_devices);
devicesList = (ListView) findViewById(R.id.pairedDevicesListView);
devices = DatabaseHandler.getInstance().getCounters(false);
adapter = new ArrayAdapter(this, R.layout.text_view_layout, devices);
devicesList.setAdapter(adapter);
devicesList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
System.out.println("Click " + devicesList.getItemAtPosition(i));
}
});
}
编辑2
ListView xml
<ListView
android:layout_width="match_parent"
android:layout_height="167dp"
android:id="@+id/pairedDevicesListView"
android:layout_gravity="center_horizontal"
android:layout_weight="0.66"
android:choiceMode="singleChoice" />
文本\视图\布局
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textviewlayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="30sp"></TextView>
您可以这样做:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(dbManager.toggleCheck(list,parent.getItemAtPosition(position).toString()) == 1){
parent.getChildAt(position).setBackgroundColor(Color.parseColor("#2196f3"));
}
else {
parent.getChildAt(position).setBackgroundColor(Color.parseColor("#e3f2fd"));
}
}
});
你能把代码的相关部分贴出来吗?谢谢。你能给我们一些密码吗?我怀疑你的适配器有问题。请发布你的布局文件不要直接更改AdapterViews的子视图!AdapterViews使用固定的视图集进行操作,其中只有内容在滚动时发生更改。改为更改数据收集,然后调用yourAdapter.notifyDataSetChanged