9

カスタムアダプタを使用して入力するグリッドビューがあります。グリッドビューにデータを入力している間、各要素に一意のタグを付けます。

このグリッドビューにデータが入力されたら、グリッドビュー内の特定の要素とそのタグを見つけたいと思います。どうすればこれを見つけることができますか?

現在、私はこれを行っています:

gridviewobject.findViewById(thetag);
// gridview object is the object of the gridview that i have populated.
4

1 に答える 1

15

上記で記述した内容は機能しますが、a)タグでビューを検索するのが、ビューを見つけるために使用できる最も遅い方法である可能性があり、b)タグを使用してビューを要求しようとしたが、そのビューがそうではない場合を除きます。現在表示されている場合は、を取得しnullます。

これはGridView、ビューをリサイクルするためです。基本的に、画面に収まるだけのビューを作成し、スクロールしながらこれらの位置とコンテンツを変更するだけです。

おそらくより良い方法はすることかもしれません

final int numVisibleChildren = gridView.getChildCount();
final int firstVisiblePosition = gridView.getFirstVisiblePosition();

for ( int i = 0; i < numVisibleChildren; i++ ) {
    int positionOfView = firstVisiblePosition + i;

    if (positionOfView == positionIamLookingFor) {
        View view = gridView.getChildAt(i);
    }
}

基本的findViewWithTagには似たようなことをしますが、整数を比較するのではなく、タグを比較します(これはオブジェクトであり、intではないため低速です)

于 2011-05-12T11:07:26.247 に答える