这是因为您的 listview 适配器可以有数千个项目,但 listview 的直接子项不超过十到二十个。
尝试将此添加到您的 Activity.onCreate
final ArrayAdapter<String> a = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
a.add("0");
a.add("1");
final ListView lv = new ListView(this);
lv.setAdapter(a);
OnItemClickListener listener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(TAG, "onItemClick cnt " + lv.getChildCount());
Log.d(TAG, "onItemClick first " + lv.getFirstVisiblePosition());
Log.d(TAG, "onItemClick last " + lv.getLastVisiblePosition());
a.add(Integer.toString(a.getCount()));
lv.post(new Runnable() {
@Override
public void run() {
Log.d(TAG, "run cnt " + lv.getChildCount());
Log.d(TAG, "run first " + lv.getFirstVisiblePosition());
Log.d(TAG, "run last " + lv.getLastVisiblePosition());
}
});
}
};
lv.setOnItemClickListener(listener);
setContentView(lv);
你会看到它是如何工作的