ListView常见问题

listView数组越界

根本原因就是数据不一致造成的,具体主要有两种原因:1. 在后台线程修改修改数组,但是和主线程不同步。2. 在主线程修改的数据,但是没有及时通知界面更新。所以只要保证数据一致就好了,解决方式:1. 在后台线程可以做大量运算,但是更新数组的那一刻放在主线程做。2. 主线程任何更新数组的操作后面,要立刻notifyDataSetChange,中间不要有其他操作。如果运算比较多,那就先不要修改数组数据,到最后一 刻再修改数据,然后notifyDataSetChange。

OnClickListener的问题

代码中在类似onMeare、onLayout、getView的地方有new OnClickListener()的写法。这个写法有很大问题:1、上述方法是在显示界面的方法,官方建议不能有耗时超作,尤其强调不要新建对象。2、上述方法有可能被反复调用多次,那意味着我们在反复的创建很多新的对象,而他们可能只有一个有用,其他的都要被回收。反复创建对象容易引起内 存碎片,何况这里面的对象很多没用到。正确的做法:1、继承OnClickListener,或者在对象中声明一个OnClickListener的类变量,全局只用一个。2、对于多个控件的onClick事件的响应,可以在onClick()方法中通过判断id来区别对待不同的view。3、对于getView()方法中的onClick事件,因为ContentView都是引用同样的id,可以通过view.setTag()的 方法打上标记,在onCLick()中通过view.getTag()来区别不同的view。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,855评论 0 17
  • 人如草芥,却活得窝囊。顽石压境逼仄,草芥依然从容生长,破石以出。哪得人生如此,活得从容潇洒,有敬无畏,乐以忘忧。人...
    流连4流年阅读 1,796评论 0 2
  • 有句话说:在你最困难的时候帮助你的人才是真朋友。 可是在别人不帮你的,却从来没有想过为什么不帮你?比如,你需要...
    58332d716fd6阅读 1,684评论 0 2
  • 你会不会偶尔也有那么个时候想去用力爱一个人~一个故事,一些感触和祝福~我讲,你听~ 一个朋友或者说成互通过名字...
    Xu饭团团阅读 4,353评论 0 0

友情链接更多精彩内容