Cambiar el color de fondo del elemento seleccionado en un ListView

Quiero saber cómo puedo cambiar el color de fondo del elemento seleccionado en mi listView. Solo quiero cambiar el elemento específico en el que hizo clic el usuario, lo que significa que si el usuario hace clic en otro elemento, será el que esté resaltado. Bueno, ya que quiero que sea lo más simple posible y que use la vista de lista predeterminada de Android, utilicé este código:

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, este está funcionando pero el problema es que es lento. Ahora quiero saber si hay alguna otra forma de hacerlo que pueda dar el mismo resultado que hice.

Traté de usarrecord_list.getSelectedView().setBackgroundColor(Color.CYAN); Pero me da una excepción de puntero nulo.

También probé el selector.xml pero tampoco funcionó. Además, hay una propiedad aquí en ListView que se llama listSelector. Es dibujable, como se dice en la documentación "Dibujable utilizado para indicar el elemento seleccionado actualmente en la lista". También creo que esto debería hacer el truco y sí, el truco en mi emulador pero no en la pestaña de mi galaxia. También probé los otros métodos, pero nada funciona como quería.

Respuestas a la pregunta(16)

Su respuesta a la pregunta