スライドを監視するために 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 サイトを参照してください。