2012-09-25 7 views
5

Ich möchte die Hintergrundfarbe eines bestimmten Elements in der Listenansicht festlegen.Wie wird die Hintergrundfarbe eines bestimmten Elements in der Listenansicht nach Position festgelegt?

Meine ListView wird von ArrayAdapter mit einer ArrayList generiert.

Ich habe ein bestimmtes Element in der Listenansicht, die ich die Hintergrundfarbe ändern möchte.

Ich kenne die Position des Artikels in der Liste.

Dies ist mein Code zum Generieren der Listview.

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

Vielen Dank!

[Bearbeiten]

Nach this post, setSelection Verwendung macht keine Wirkung, wenn in onCreate() verwendet wird, die Arbeit um ist "onAttachedToWindow in PullToRefreshListView das Verfahren entfernen". Ich verstehe die Lösung nicht ganz. Darf ich fragen, wie soll ich das erreichen? Ich bin eine Unterklasse von Activity, daher kann ich keine andere Klasse mehr ableiten.

+0

haben Sie versucht, dies http://stackoverflow.com/questions/6055277/set-a-background-color-to-a-selected-listview-item-in-android –

+0

Ich versuchte, es gibt mir Nullpointerexception auf myList .getSelectedView(). setBackgroundColor (getResources(). getColor (Color.RED)); – ssgao

Antwort

2

Sie müssen ArrayAdapter Unterklasse und überschreiben die getView(...) Methode. Der Einfachheit halber könnten Sie einfach die Basisklassenimplementierung aufrufen und die Hintergrundfarbe für die zurückgegebene View festlegen.

Bearbeiten: Das folgende Beispiel färbt die Hintergründe der Artikel abwechselnd schwarz und weiß.

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

Ich unterteilte bereits Aktivität – ssgao

+0

Nicht die gleiche Sache. Subclassing ArrayAdapter ermöglicht es Ihnen, die erforderliche Methode zu überschreiben. Subclassing Aktivität bringt dir nichts. Hier. – zienkikk

+0

Ähm .. Ich meine, ich kann nur eine Klasse Unterklasse ... also wenn ich Aktivität subclasse, kann ich ArrayAdapter nicht mehr Unterklasse – ssgao

0

Dieser Code gilt für die Auswahl des Listeneintrags.

diesen Code Versuchen ...

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

Viel Glück.

Verwandte Themen