Android開発してて思った

Android開発をしていて思ったことを書いていきます

ListFragmentから子ビューを取得して変更する

ListFragmentで子Viewを取得する方法です。

リストから選択してタップした場合にはOnClickListenerでViewを取得しているので
そこから取得すればいいのですが、ActionBarのメニューを押したときに
リストの見た目を変更したい場合にはどのようにViewを取得すればよいのでしょうか。

まずはじめにListFragmentのgetListView()で自身のListViewを取得します。
そして、getChildAt(position)でpositionで指定した位置にあるViewが取得できます。

下のサンプルコードではリストにあるViewの数だけループしてすべてのViewを設定しています。

ListView listView = getListView();
for(int i=0;i<listView.getCount();i++) {
    // リストの子ノードを取得して編集する
    View view = listView.getChildAt(i);
    // Viewの中にあるImageViewの背景を変更する
    ImageView imageView = (ImageView)view.findViewById(R.id.imageView1);
    imageView.setBackgroundColor(Color.RED);
}