软件编程
位置:首页>> 软件编程>> Android编程>> Android开发中记一个SwipeMenuListView侧滑删除错乱的Bug

Android开发中记一个SwipeMenuListView侧滑删除错乱的Bug

作者:淘_tao  发布时间:2021-08-02 04:24:21 

标签: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网站的支持!

来源:http://blog.csdn.net/xiangzhihong8/article/details/52643220

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com