Il existe de nombreuses solutions sur Internet pour la suppression glissante, comme la réécriture de Listview pour surveiller le glissement. Aujourd'hui, nous parlerons du prochain SwipeListView. Il s'agit d'un composant encapsulé qui a été open source par un ami en ligne. de nombreuses situations. Adresse du projet : https://github.com/baoyongzhang/SwipeMenuListView, j'ai également adopté le principe d'emprunt et l'ai utilisé directement.
Mais lors du débogage et de l'exécution de la suppression glissante des données, un problème est survenu. La position de suppression était erronée. La première donnée a été supprimée, mais la dernière a donc été supprimée. avec listview. Après vérification, il n'y a pas de problème avec les données, cela signifie donc que la position du contrôle supprimé a été mal calculée lors de la suppression. Voici d'abord deux rendus.
Alors, quelle est la cause du problème ? J'ai regardé une version précédemment soumise (je me souviens qu'elle était bonne à utiliser auparavant, indiquant qu'il s'agissait d'un problème récemment soumis), donc j'ai trouvé un problème, c'est-à-dire le La méthode getview de la classe SwipeMenuAdapter est plus petite qu'avant. Il y a un jugement supplémentaire, ajouté pour la mise en cache. J'ai essayé de supprimer la condition de jugement et je l'ai réexécuté. D'accord, voici un peu de code. est introduit par l'éditeur. Je me souviens d'un bug dans la suppression coulissante latérale de SwipeMenuListView dans le développement Android. J'espère que cela sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message. Merci. merci beaucoup pour votre soutien sur le site Web PHP chinois !
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; }