ホームページ  >  記事  >  Java  >  Android 開発における SwipeMenuListView 側のスライド削除障害バグを思い出してください

Android 開発における SwipeMenuListView 側のスライド削除障害バグを思い出してください

高洛峰
高洛峰オリジナル
2017-01-13 10:05:511439ブラウズ

スライドを監視するために Listview を書き換えるなど、インターネット上には多くのソリューションがあります。これは、以前に友人によってオンラインでオープンソース化されたカプセル化されたコンポーネントです。プロジェクトアドレス: https://github.com/baoyongzhang/SwipeMenuListView、私も借用原則を採用し、それを直接使用しました。

しかし、データのスライド削除を実行すると、削除位置が間違っているという問題が発生しました。そこで、問題を見つけるために、最初にリストビューで試してみました。データに問題はありません。削除されたコントロールの位置が削除中に正しく計算されなかったことを意味します。まず 2 つのレンダリングをアップロードしましょう。

それで、問題の原因は何でしょうか? 以前に提出されたバージョンを調べたところ (最近提出された問題であることを示す、以前は使用できたことを覚えています)、問題が見つかりました。 SwipeMenuAdapter クラスには以前よりも 1 つ多くの判定があり、キャッシュのために判定条件を削除して再度実行してみました。これは

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; 
}

によって導入された SwipeMenuListView の横スワイプ削除です。紛らわしいバグです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信させていただきます。PHP 中国語 Web サイトをよろしくお願いいたします。

その他の Android 開発ノート SwipeMenuListView の横スライド削除バグに関する関連記事については、PHP 中国語 Web サイトを参照してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。