Maison  >  Article  >  Java  >  Rappelez-vous un bug de trouble de suppression par glissement latéral SwipeMenuListView dans le développement Android

Rappelez-vous un bug de trouble de suppression par glissement latéral SwipeMenuListView dans le développement Android

高洛峰
高洛峰original
2017-01-13 10:05:511443parcourir

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; 
}
Pour plus d'articles sur un bug de suppression latérale de SwipeMenuListView, veuillez prêter attention au site Web PHP chinois

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn