リストビューの特定のアイテムを取得する

ListView(リストビュー)の特定のアイテムを取得するにはgetChildItemメソッドにアイテムのインデックス番号を渡します。

ただし、リストビューでは画面上に移っているアイテムだけしか取得できません。

下の画像で説明すると画面上に移っている「アイテム3」や「アイテム5」は取得できますが、画面に映っていない「アイテム1」や「アイテム7」などは取得できません。

そこで画面一番上のインデックス番号を取得してから目的のインデックス番号にアクセスするようにします。

例えば、上の画像の「アイテム5」にアクセスしているのが次のようなコードです。

public class MainActivity extends FragmentActivity 
{
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        final ListView listView = (ListView) findViewById(R.id.listView);
        
        /*中略*/
        
        int itemIndex = 5;
        int firstVisibleIndex = listView.getFirstVisiblePosition();
            //画面一番上のアイテム番号を取得
        int fictionalIndex = itemIndex - firstVisibleIndex;
            //取得したいアイテムのインデックス番号を求める。
        View itemView = listView.getChildAt(fictionalIndex);
    }
}

getFirstVisiblePositionメソッドで画面に映っている最初のアイテムの位置を取得できます。

目的のインデックス番号から初めのアイテム番号を引けば画面上のアイテムの位置が分かります。

ただし、取得できるのは現在画面上に移っているアイテムだけで、範囲外のアイテムビューは取得できません。

関連項目
プライバシーポリシー