9

100個のアイテムを含むリストビューがあり、最初の10個のアイテムを表示したいのですが、次のボタンをクリックすると、次の10個、つまり11から20までを表示する必要があります。最初の10個のアイテムを取得するためのコードがあります。

public int getCount() {
        return 10;
    }

しかし、次の10個のアイテムを単独で取得する方法など。何か案が

4

2 に答える 2

8

これを行う1つの方法は、

1)ArrayListにすべてのデータを入力しないでください。代わりに、それらを個別のArrayList()に保持し、BaseAdapterで使用する最大10個の値を持つal1ArrayList( )を使用します。al2

2)最初は、

  • al2 =al1[0]からal1​​[9]
  • BaseAdatper(コンテキスト、データ)

3)BaseAdapterはそのままにしますが、変更します

 @Override
 public int getCount() {
 return 10;
}

 @Override
 public int getCount() {
 return data.size();
}

必須ではありませんが、良い習慣です。これで、アダプターに渡すのは10個のアイテムのみが表示されます。また、拡張BaseAdatperクラスにパブリック関数を記述して、data変数を設定します。

4)次のボタンクリックイベントで、から次の10個のアイテムを取得しal1、に割り当てal2ます。作成したパブリック関数を使用して、で上書きdataal2ます。

5)BaseAdapterにはnotifyDataSetChangedというメソッドがあり、それを呼び出します。これは、アダプターに上から下に更新するように指示します。data更新が発生したときに新しいデータで上書きしたため、新しいデータが表示されます。それでおしまい。

al1現在表示しているインデックスを追跡する方法を考え出すのは難しいことではないと思います。:)

于 2013-02-14T08:17:15.457 に答える
3

100個のアイテムがある場合は、アダプターの最初の10個のアイテムを取得し、ユーザーが[次へ]を押すと、次の10個を取得します。

編集:コードのリクエストに応じて、ページ付けを行う方法の簡単な例を提供できます。

int totalItems = 100;
int currentPage = 0;
int pageSize = 10;
int numPages = (int) Math.ceil((float) totalItems/pageSize);

ArrayList<String> items = new ArrayList<String>(totalItems);

List<String> page = items.subList(currentPage, pageSize);

上記の例を見ると、アイテムの数と必要なページサイズを指定して、表示する必要のあるページ数を計算できます。次に、ArrayListからサブリストを選択できます。ユーザーが[次へ]を押すたびに、currentPageをインクリメントし、新しいサブリストでアダプターを更新します。

于 2013-02-14T07:26:26.533 に答える