2012-09-25 26 views
5

Quiero establecer el color de fondo de un elemento específico en la vista de lista.¿Cómo establecer el color de fondo de un elemento específico en la vista de lista por posición?

Mi lista de lista es generada por ArrayAdapter utilizando una ArrayList.

Tengo un elemento específico en la vista de lista que planeo cambiar el color de fondo.

Sé la posición del artículo en la lista.

Este es mi código para generar la vista de lista.

respondMessageListView = (ListView) findViewById(R.id.respondMessageListView); 
respondMessageListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, autoRespondMessages.getMessages())); 

¡Gracias!

[editar]

Según this post, utilizando setSelection hace ningún efecto si se utiliza en onCreate(), el trabajo alrededor es "quitar el método onAttachedToWindow en PullToRefreshListView". No entiendo muy bien la solución. ¿Puedo preguntar cómo debo lograr esto? Soy una subclase de Activity, por lo que ya no puedo subclasificar ninguna otra clase.

+0

has probado esto http://stackoverflow.com/questions/6055277/set-a-background-color-to-a-selected-listview-item-in-android –

+0

Lo intenté, me da nullpointereception en myList .getSelectedView(). setBackgroundColor (getResources(). getColor (Color.RED)); – ssgao

Respuesta

2

Deberá tener la subclase ArrayAdapter y anular el método getView(...). Para mayor simplicidad, puede llamar a la implementación de la clase base y establecer el color de fondo para el View devuelto.

Editar: El siguiente ejemplo colorea los fondos de los elementos alternando en blanco y negro.

private class MyAdapter extends ArrayAdapter { 

    ... 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = super.getView(position, convertView, parent); 
     v.setBackgroundColor(position % 2 == 0 : 0xff000000, 0xffffffff); 
    } 
} 
+0

Ya he subclasificado Actividad – ssgao

+0

No es lo mismo. La creación de una subclase de ArrayAdapter le permite anular el método necesario. La actividad de subclases no te da nada. Aquí. – zienkikk

+0

Um .. Quiero decir que solo puedo subclasificar una clase ... así que si subclasé Actividad, no puedo crear una subclase ArrayAdapter más – ssgao

0

Este código es para cuando se selecciona el elemento de lista.

Prueba este código ...

listview.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> myAdapter, View myView, int pos, long mylng) { 

      if(pos == 1) { 
        // to change the listview background 
        listview.setBackgroundColor(getResources().getColor(R.color.your_color_id)); 

        // to change the selected item background color 
        myView.setBackgroundColor(getResources().getColor(R.color.your_color_id)); 
      } 
      } 
      }); 

Buena suerte.

Cuestiones relacionadas