1

一度に 5 つの項目を表示できる ListView があるとします。この ListView によって表示される (たとえば) 100 個のアイテムがあります。このリストをスクロールすると、ListView は ArrayAdapter.getView(int position, ...) を呼び出して新しいビューを取得します。

問題は、この例の ListView は一度に 5 つ以上の項目を表示できないため、パラメーター 'position' が '5' を超えないことです。しかし、ユーザーが項目をクリックすると、この選択された項目が ArrayAdapter でどのメンバー/インデックス/位置/... を表しているかを知るにはどうすればよいでしょうか?

下にスクロールして、次のように表示されたとします。


項目 56

項目 57

項目 58

項目 59

項目 60

ユーザーが「アイテム 58」をクリックすると、「58」を取得したいときに、位置パラメーターが「2」に等しくなります。同様に、'item 59' は 'position' を '3' に設定しますが、私は '59' が必要です。私に何ができる?

4

3 に答える 3

1

ArrayAdapter.getItem()を使用して、クリックしたビューに関連付けられたアイテムを取得できます。あなたの場合、現在位置2にある58番目のアイテムを返します。

于 2013-10-24T11:36:15.333 に答える
1

さて、リストビュー (1.5 章のhttp://www.vogella.com/articles/AndroidListView/article.htmlのコードに基づく) を使用してサンプル アプリケーションを作成し、アダプターで getView メソッドをオーバーライドしました。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    System.out.println("getView " + String.valueOf(position));
    return super.getView(position, convertView, parent);
}

次に、スクロール後にアプリケーションと出力を実行しました (画面ごとに 10 ビュー): 最初の画面で 0...9、次に 10..19。

そのため、パラメーターの位置は、getView の views_number_per_screen を超えて移動します。アクティビティのサンプル コードを参照してください: http://pastebin.com/tvKv8kBu

于 2013-10-24T12:16:35.747 に答える