Zmień kolor tła wybranego elementu na ListView

Chcę wiedzieć, jak mogę zmienić kolor tła wybranego elementu na mojej liścieView. Chcę tylko zmienić konkretny element kliknięty przez użytkownika, co oznacza, że ​​jeśli użytkownik kliknie inny element, będzie to ten, który jest podświetlony. Ponieważ chcę, aby było to możliwie najprostsze i użyłem domyślnego widoku listy androidów, użyłem tego kodu:

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));
            }
        });

Ok, ten działa, ale problem polega na tym, że jest powolny. Teraz chcę wiedzieć, czy mogę zrobić coś innego, co da ten sam efekt co ja.

Próbowałem użyćrecord_list.getSelectedView().setBackgroundColor(Color.CYAN); ale daje mi wyjątek zerowego wskaźnika.

Wypróbowałem także selector.xml, ale to też nie wystarczyło. Ponadto istnieje jedna właściwość ListView, która nazywa się listSelector. Dokumentacja „Drawable służy do wskazywania aktualnie wybranego elementu na liście”. Wierzę również, że powinno to załatwić sprawę i tak, to robi sztuczkę na moim emulatorze, ale nie na mojej karcie galaktyki. Próbowałem też innych metod, ale nic nie działa tak, jak chciałem.

questionAnswers(16)

yourAnswerToTheQuestion