Я хочу знать, как изменить цвет фона выбранного элемента в моем спискеView. Я хочу только изменить конкретный элемент, нажатый пользователем, то есть если пользователь нажмет на другой элемент, он будет выделен. Ну, так как я хочу, чтобы он был максимально простым и использовал список по умолчанию для Android, я использовал этот код:
record_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
try{
for (int ctr=0;ctr<=record_items.length;ctr++){
if(i==ctr){
record_list.getChildAt(ctr).setBackgroundColor(Color.CYAN);
}else{
record_list.getChildAt(ctr).setBackgroundColor(Color.WHITE);
}
}
}
catch (Exception e){
e.printStackTrace();
}
Log.v("Selected item",record_list.getItemAtPosition(i));
}
});
Хорошо, этот работает, но проблема в том, что он медленный. Теперь я хочу знать, есть ли другой способ, который я могу сделать, который даст тот же результат, что и я.
Я пробовал использовать record_list.getSelectedView().setBackgroundColor(Color.CYAN);
, но он дает мне исключение с нулевым указателем.
Я также попробовал selector.xml, но также не сделал этого. Кроме того, в ListView есть один объект, который называется listSelector. Это можно сделать в соответствии с документацией "Drawable, используемой для указания текущего выбранного элемента в списке". Я также считаю, что это должно сделать трюк, и да, это делает трюк на моем эмуляторе, но не на моей вкладке галактики. Я также пробовал другие методы, но ничего не работает, как хотелось бы.