100個のアイテムを含むリストビューがあり、最初の10個のアイテムを表示したいのですが、次のボタンをクリックすると、次の10個、つまり11から20までを表示する必要があります。最初の10個のアイテムを取得するためのコードがあります。
public int getCount() {
return 10;
}
しかし、次の10個のアイテムを単独で取得する方法など。何か案が
100個のアイテムを含むリストビューがあり、最初の10個のアイテムを表示したいのですが、次のボタンをクリックすると、次の10個、つまり11から20までを表示する必要があります。最初の10個のアイテムを取得するためのコードがあります。
public int getCount() {
return 10;
}
しかし、次の10個のアイテムを単独で取得する方法など。何か案が
これを行う1つの方法は、
1)ArrayListにすべてのデータを入力しないでください。代わりに、それらを個別のArrayList()に保持し、BaseAdapterで使用する最大10個の値を持つal1
ArrayList( )を使用します。al2
2)最初は、
3)BaseAdapterはそのままにしますが、変更します
@Override
public int getCount() {
return 10;
}
に
@Override
public int getCount() {
return data.size();
}
必須ではありませんが、良い習慣です。これで、アダプターに渡すのは10個のアイテムのみが表示されます。また、拡張BaseAdatperクラスにパブリック関数を記述して、data
変数を設定します。
4)次のボタンクリックイベントで、から次の10個のアイテムを取得しal1
、に割り当てal2
ます。作成したパブリック関数を使用して、で上書きdata
しal2
ます。
5)BaseAdapterにはnotifyDataSetChangedというメソッドがあり、それを呼び出します。これは、アダプターに上から下に更新するように指示します。data
更新が発生したときに新しいデータで上書きしたため、新しいデータが表示されます。それでおしまい。
al1
現在表示しているインデックスを追跡する方法を考え出すのは難しいことではないと思います。:)
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をインクリメントし、新しいサブリストでアダプターを更新します。