所以,我有一个列表视图并从外部数据库获取数据。我想第一次有 20 个项目,然后如果用户向下滚动它会加载另外 20 个,依此类推。
class ItemAdapter extends BaseAdapter {
private ArrayList<Item> objects;
private class ViewHolder {
public TextView text_tt;
}
@Override
public int getCount() {
return SIZE;
//return 9;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
final ViewHolder viewHolder;
if (v == null) {
LayoutInflater inflater = (LayoutInflater) getActivity().getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.list_item, null);
viewHolder = new ViewHolder();
viewHolder.text_tt = (TextView) v.findViewById(R.id.toptext);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if(position==getCount()-1){
LoadMore(); //asynctask - load other 20
}
return v;
}
}
在加载函数中,我解析了预读的 json 数据,所以我只需在列表中添加另外 20 个,然后notifyDataSetChanged()
.. 该函数运行良好,但它有一个副作用:大约 50% 的时间点击项目不是认可。我向下滚动,收到接下来的 20 个,但我无法单击任何项目。但例如,如果我更改活动并返回列表视图,它会起作用。为什么?谢谢!