ListView常见问题

2017-04-27  本文已影响0人  tiger桂

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。

上一篇下一篇

猜你喜欢

热点阅读