适配器新手操作的时候经常会遇到数据紊乱错位的问题,延伸会导致数据和点击事件不一致 数据越界,刷新不及时的问题。
今天给大家介绍一炒鸡简单的模式可以杜绝这个问题。
就是保证每次刷新前数据是准的,且数据源不与外界发生任何关联,只是内部的添加。没有任何内存指到adapter内部
有这个问题解决不了的 欢迎讨论。
- 适配器用局部变量装数据
- 每次 notifyDataSetChanged() 直接操作数据源
//Activity里面
protected List<String> mDatas = new ArrayList<>();//假数据
public void init() {
yourAdapter adapter = new yourAdapter();
lv.setAdapter(adapter);
//每次网络请求or数据变化
adapter.setData(mDatas);
}
public class yourAdapter<T> extends BaseAdapter {
protected List<T> datas = new ArrayList<>();
private someImpl impl;
private Activity act;
public yourAdapter() {
}
public void setData(List<T> datas) {
// UI线程
datas.clear();
datas.addAll(datas);
notifyDataSetChanged();
}
@Override
public int getCount() {
return datas.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return null;
}
}