大家有没有遇到过这样的需求:在Adapter里面写了listview的item展示的某个属性,有的条目有,有的条目没有。
现在假设item里面第一条展示一个头条的文字或者图片都行。
那么我们写一个TextView或者ImageView控件
然后应该在getView()方法里面写个判断
if(position == 1) {
holder.tv.setVisibility(View.VISIBLE);
holder.tv.setText("头条");
}
这样展示的话出现的问题就是第一条会展示出来,然后往下滑,在再次复用convertVIew的时候,就会出现多条展示这个头条的文字,并且这个越往下滑每次都会出现这个文字。
其实这个问题很简单,那么就分析一下
你在复用这个convertView的时候会沿用这个holder,并且这个holder先前进行的操作都会有Tag记录
那么这个tv已经展示,并且赋值了,所以还会一直存在。
解决问题:
if(position == 1) {
holder.tv.setVisibility(View.VISIBLE);
holder.tv.setText("头条");
} else {
holder.tv.setVisibility(View.GONE);
}
简单点总结:
如果在Adapter里面写if语句,那么就必须要有else处理
如果在Adapter里面写switch语句,那么就必须写defult处理
这样肯定不会出现这样的问题。
欢迎大家提问
个人邮箱jsmeli@163.com