没有合适的资源?快使用搜索试试~ 我知道了~
首页浅谈Android中适配器的notifyDataSetChanged()为何有时不刷新
浅谈Android中适配器的notifyDataSetChanged()为何有时不刷新
2.5k 浏览量
更新于2023-05-31
评论
收藏 111KB PDF 举报
主要介绍了浅谈Android中适配器的notifyDataSetChanged()为何有时不刷新,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
资源详情
资源评论
资源推荐

浅谈浅谈Android中适配器的中适配器的notifyDataSetChanged()为何有时不为何有时不
刷新刷新
主要介绍了浅谈Android中适配器的notifyDataSetChanged()为何有时不刷新,文中通过示例代码介绍的非常详
细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
学过Android开发的人都知道,ListView控件在开发中经常遇到,并且ListView通常结合Adapter适配器来进行数据显示和数据
更新操作。姑且假设数据存储在名为dataList的成员变量中。数据操作无非是增加数据、删除数据这两种主要的操作,而当数
据有所变化时,为了及时向用户提供更新后的数据,我们知道需要在数据更新后调用适配器的notifyDataSetChanged()方法,
来显示更新后的数据。殊不知,该方法并非百试不爽,在此我们便来讨论下具体的原因,其实本质是关注内存的分配情况。
先来看几段代码。
代码段1(某Activity中):
private List<Map<String,String>> dataList;
private ListView listView;
private ListAdapter adapter;
listView = findViewById(R.id.mancard);
adapter = new ListAdapter(this, dataList);
listView.setAdapter(adapter);
上述代码是把Adapter适配器和ListView控件进行绑定。
代码段2(ListAdapter中的部分代码):
public class ListAdapter extends BaseAdapter{
private Context context;
private List<ArrayList> list;
ListAdapter(Context context, List list){
this.context = context;
this.list = list;
}
@Override
public Object getItem(int position) {
return list.get(position);
}
上述代码是通过上下文环境和数据列表来构造适配器,并且重写其getItem()方法。在此需要明白的是list成员变量是适配器中
的私有变量,getItem()方法是当数据显示在ListView时会回调的方法,或者说当显示数据或数据发生改变重写加载数据时会回
调这个方法(当然还会调用getView()方法,此时不再赘述)。 代码段3~6模拟数据改变: 代码段3
dataList.remove(1);
adapter.notifyDataSetChanged();
代码段4:
Map vivian = new HashMap();
vivian.put("sex", "girl");
vivian.put("nick", "vivian");
vivian.put("content", "阳光魅力大方无极限");
dataList.add(vivian);
adapter.notifyDataSetChanged();
代码段5:
dataList = getData();
adapter.notifyDataSetChanged();
private List getData(){
List data = new ArrayList();
Map vivian = new HashMap();
vivian.put("sex", "girl");
vivian.put("nick", "vivian");
vivian.put("content", "阳光魅力大方无极限");
data.add(vivian);
Map Mryang = new HashMap();
Mryang.put("sex", "boy");
Mryang.put("nick", "杨阳洋");
Mryang.put("content", "成熟稳重高富帅");
data.add(Mryang);
return data;


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0