[Android] ListView アイテム個々の背景、高さなどを変える

ListViewの背景や高さなど、共通設定から個々の設定に変更したい場合があります。itemの表示は動的に変わるのでそれに合わせないとできません
 

    ArrayAdapter

  1. ListView と ArrayAdapter 簡単なテキストリストの表示
  2. ArrayAdapterを使ってレイアウトをアレンジ
  3. ListActivity と ArrayAdapterで画像とテキストをリスト表示
    Basedapter

  1. BaseAdapterで画像とテキストをリスト表示
  2. ListViewリストをタップして画面遷移
  3. ListViewアイテムの移動、削除
  4. ListView アイテム個々の背景、高さなどを変える

Android Studio 2.3.3
Android 7.1.1

 


ListView convertView

 
例えばadpterのViewHolderを使ったリサイクルをやっているところで
position(何行目かわかる)からその背景色を変えるためには、このようにconvertviewを使います
convertviewはinflateで挿入されるviewでレイアウトのxmlファイルですが、共通でしかも動的にはつかえません。

getView()の中で使います。但しあまり重くならないようにしないと遅くなったりout of memoryになる可能性が増します
 

 
このようにpositionが2のところだけ背景色を変更できました。
 

 
更に、高さ、文字色等を変えたり、他のitemの背景色も変えていく設定はこのようになります。
 

 

 

MainActivity.java

 
ListViewAdapter.java

 

レイアウト
activity_main.xml


 
list.xml