Я хотел бы изменить цвет фона элемента при нажатии, в простом спискеView. Вот мой код:Изменить цвет фона элемента в простом спискеView
boolean[] selectedItem = new boolean[listElement.length]
final ArrayList<String> list1 = new ArrayList<>();
Collections.addAll(list1, listElement);
final ListView mylist = (ListView) findViewById(R.id.listView);
final ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, list1);
mylist.setAdapter(adapter);
mylist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
int firstVisiblePosition = mylist.getFirstVisiblePosition();
int effectivePosition = pos - firstVisiblePosition;
if (!selectedItem[pos]) {
mylist.getChildAt(effectivePosition).setBackgroundColor(Color.parseColor("#66F44336"));
} else {
mylist.getChildAt(effectivePosition).setBackgroundColor(Color.parseColor("#EEEEEE"));
}
selectedItem[pos] = !selectedItem[pos];
}
});
Когда список короток (без прокрутки не участвует) он работает, когда он долго не будет: цвет фона щелкнутого элемента делает изменения, но когда я начинаю прокручивать цвет фона каждый элемент начинает меняться, и я не могу найти никакой логики в этих изменениях, они меняются и меняются, даже если я даже не трогаю их, просто прокручивая, что странно, поскольку цвет должен меняться только при вызове onItemClick() , правильно? Что мне не хватает?