2012-09-25 14 views
5

リストビューの特定の項目の背景色を設定したいと思います。リストビュー内の特定のアイテムの背景色を位置で設定する方法は?

私のリストビューは、ArrayListを使用してArrayAdapterによって生成されます。

リストビューに背景色を変更する予定の項目があります。

私はリスト内のアイテムの位置を知っています。

これは私のリストビューを生成するためのコードです。

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

ありがとうございます!

[編集]

this postによれば、setSelectionを使用するのonCreate(に使用されている場合は影響を行いません)、回避策は、 "PullToRefreshListView方法onAttachedToWindowを削除" です。私は解決策をあまり理解していません。私はこれをどのように達成すべきか尋ねてもいいですか?私はActivityのサブクラスなので、他のクラスをサブクラス化することはできません。

+0

あなたはこれを試してみましたか?http://stackoverflow.com/questions/6055277/set-a-background-color-to-a-selected-listview-item-in-android –

+0

私は試みました、それは私にnullpointerexception myListを与える。getSelectedView()。setBackgroundColor(getResources()。getColor(Color.RED)); – ssgao

答えて

2

ArrayAdapterをサブクラス化し、getView(...)メソッドをオーバーライドする必要があります。簡単にするために、基本クラスの実装を呼び出して、返されるViewの背景色を設定することができます。

編集: 次の例では、アイテムの背景が白と黒で交互に表示されます。

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

私は既にサブクラス化されていますアクティビティ – ssgao

+0

同じことではありません。 ArrayAdapterをサブクラス化すると、必要なメソッドをオーバーライドできます。サブクラス化アクティビティでは何も得られません。ここに。 – zienkikk

+0

ええと、私は1つのクラスだけをサブクラス化することができます...だから私はアクティビティをサブクラス化した場合、ArrayAdapterをサブクラス化することはできません – ssgao

0

このコードは、リストアイテムを選択したときのコードです。

は...

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

幸運をこのコードを試してみてください。

関連する問題