ここには非常に単純なアダプターがあります。リストにたくさんの空白が必要な場所。1,000 としましょう。アダプターの背後にあるデータセットには、5 つの要素しかありません。このアダプターがリストビューに読み込まれると、画面をスクロールするまですべてが正常に見えます。その後、位置が繰り返され、データセットからのデータが読み込まれます。なんで?getCount() は、オーバーライドされたときに、実際にデータセットにあるサイズを常に返す必要がありますか?
private abstract class BlankEntriesAdapter extends BaseAdapter {
private final List<String> rowList;
public BlankEntriesAdapter(List<String> rowList) {
this.rowList = rowList;
}
@Override
public int getCount() {
//force a few blank spaces
return 1000;
}
@Override
public String getItem(int position) {
if (position < rowList.size()) {
return rowList.get(position);
}
return null;
}
@Override
public long getItemId(int position) {
RowItem item = getItem(position);
if (item != null) {
return item.rowId;
}
return 0L;
}
@Override
public boolean isEnabled(int position) {
return position < rowList.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//ISSUE IS HERE. Position numbers start to repeat. Expect position to match what row was drawn to screen.
String stringItem = getItem(position);
/*Load string to view if not null. Code not shown.*/
}
}