关于listview的setAdapter和notifyDataSetChanged

来源:互联网 发布:淘宝助请选择发货网点 编辑:程序博客网 时间:2024/05/14 07:00

做了个需要更新listview的项目,在listview更新时遇到问题,抓耳挠腮半天仍未能解决,最后请教高手才得以解决(其实是自己太菜

了,现在想想又是被一个简单问题困扰了)

1,Adapter中notifyDataSetChanged的作用

        对于Android开发来说处理一些界面需要和Adapter适配器打交道,虽然Android自带了一些比如ArrayAdapter但是大多数情况下无

法满足我们需要,所以就要从BaseAdapter派生一个类满足我们特殊的需要。
        首先我们可能重写getView(),通过LayoutInflater的inflate方法映射一个自己定义的Layout布局xml加载或从xxxView中创建。这些大

家可能滚瓜烂熟了但是仍然很多Android开发者对于BaseAdapter中notifyDataSetChanged()方法不是很理解,notifyDataSetChanged方

法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。

2,setAdapter的作用

        顾名思义,就是为listview放置适配器,这次需要更新listview时错就错在错用了notifyDataSetChanged,而没有用setAdapter。

其实问题很简单,我的更新不是常见的对一个单独的listview的增删改查的更新操作,而是每次需要取到新的list的更新,每次都是取新

的list就要每次都setAdapter一下,最后得以更新listview。


更新一下,感谢评论给与我的提醒,在发表博文之后曾发现好像问题不在setAdapter和notifyDataSetChanged上 当我把convertView == null的判断去掉后 貌似两种方法都可以得到更新了 现在经过热心人的评论 我终于完全明白两者之间区别 

当时真是困扰了很久 网上搜了半天 就没找找到如此精准的解释 导致自己改好了错误 也是一知半解

本文精华全在评论 博文就不改了 再次感谢热心网友