Android开发中记一个SwipeMenuListView侧滑删除错乱的Bug
程序员文章站
2024-03-04 23:59:00
做侧滑删除网上有很多方案,比如重写listview实现滑动的监听,今天说下一个swipelistview,这个是之前一个朋友在网上开源的一个封装组件,能够适用于多种情况,项...
做侧滑删除网上有很多方案,比如重写listview实现滑动的监听,今天说下一个swipelistview,这个是之前一个朋友在网上开源的一个封装组件,能够适用于多种情况,项目地址:https://github.com/baoyongzhang/swipemenulistview,我也采用了拿来主义直接拿来用了。
但是在调试运行的滑动删除数据的时候,却出现了一个问题,删除位置错乱,删除的第一个数据,却删除了最后一个,于是找问题呗,我首先用listview试了下,数据是没有问题的,那么说明是删除的时候删除的控件对位置的计算错误了,先上两张效果图。
那么是什么问题造成的呢,看了一个之前提交的版本(记得之前使用是好的,说明是最近提交的问题,于是发现一个问题,就是swipemenuadapter这个类的getview方法较之前多了一个判断,为了缓存加的,尝试的心态将判断条件去掉,再运行了下,好了,这里贴出部分代码。
public view getview(int position, view convertview, viewgroup parent) { swipemenulayout layout = null; // if (convertview == null) { view contentview = madapter.getview(position, convertview, parent); swipemenu menu = new swipemenu(mcontext); menu.setviewtype(getitemviewtype(position)); createmenu(menu); swipemenuview menuview = new swipemenuview(menu, (swipemenulistview) parent); menuview.setonswipeitemclicklistener(this); swipemenulistview listview = (swipemenulistview) parent; layout = new swipemenulayout(contentview, menuview, listview.getcloseinterpolator(), listview.getopeninterpolator()); layout.setposition(position); // } else { // layout = (swipemenulayout) convertview; // layout.closemenu(); // layout.setposition(position); //// view view = madapter.getview(position, layout.getcontentview(), //// parent); // } if (madapter instanceof baseswiplistadapter) { boolean swipenable = (((baseswiplistadapter) madapter).getswipenablebyposition(position)); layout.setswipenable(swipenable); } return layout; }
以上所述是小编给大家介绍的android开发中记一个swipemenulistview侧滑删除错乱的bug,希望对大家有所帮助