Android:ListView上的项目在单击后更改背景色

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) 例

我对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)
例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