我正在尝试使用持有者创建ListView
,并在滚动时添加更多项目。问题是,我的适配器无法将新项目识别为新项目。在这一点上我很困惑。这有什么不对?
我的适配器getView方法的简化版本:
public View getView(final int position, View convertView, ViewGroup parent) {
final MyHolder holder;
if (convertView == null) {
LayoutInflater li = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = li.inflate(R.layout.empty_item, null);
holder = new MyHolder();
convertView.setTag(holder);
holder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
} else {
holder = (MyHolder) convertView.getTag();
}
return convertView;
}
MyHolder:
class MyHolder {
public TextView tvTitle;
}
所以前3个项目进入convertview==null
,但其余的则没有。这可能是什么问题?
答案 0 :(得分:0)
1)向适配器添加新项目时,必须致电notifyDataSetChanged()
以通知附加的观察者数据更改并刷新您的观点。
2)当需要为新项目/布局充气时,您的if
区块(convertview==null
)将被执行,否则将调用{{ 1}}阻止回收旧的。
这是ListView
's recycling mechanism的工作方式: