当前位置: 代码迷 >> Android >> ListView的Item中有多个Button,左右滚屏后Button原有状态丢失
  详细解决方案

ListView的Item中有多个Button,左右滚屏后Button原有状态丢失

热度:51   发布时间:2016-05-01 10:47:10.0
ListView的Item中有多个Button,上下滚屏后Button原有状态丢失
ListView的每个Item下都有2个Button(A和B),需求是点击ButtonA,然后ButtonA隐藏。
可是在上下滚屏操作中,发现屏幕下方最新出现的某个Item上的ButtonA也被隐藏了。
如果我分别把同屏的2个Item下ButtonA都隐藏,那么向下滚屏后,又会在某处新出现2个ButtonA被隐藏的Item.
怎么让Item记住他的Button的状态呢?
Android? listview

------解决方案--------------------
你的adapter中的getView方法怎么写的?
可以用一个List<HashMap<String,Boolean>>来存放button信息
在getView中
if(!list.get(position).get("A")){
    btnA.setVisibility(View.GONE);
}

然后再onItemClickListener的onClick方法中
改变对应位置的hashmap的值,然后再用adapter.notifyDataSetChanged();刷新界面。
------解决方案--------------------
getView方法返回的convertView是重用的,就是如果前面有它会直接拿来用而不会重新创建,只是里面的数据变了。
要想达到你想要的结果,你需要点击按钮的时候存储对应的值到list中,然后listview展示的时候,每个item需要取前面那个值做判断然后决定按钮是否隐藏,不知道我说明白了没有。
  相关解决方案