Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發中記一個SwipeMenuListView側滑刪除錯亂的Bug

Android開發中記一個SwipeMenuListView側滑刪除錯亂的Bug

編輯:關於Android編程

做側滑刪除網上有很多方案,比如重寫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,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved