J'ai une liste avec chaque ligne contenant du texte et un bouton de suppression. Lorsque le bouton Supprimer est enfoncé, la ligne doit être supprimée. J'utilise un adaptateur de base et il y a une liste globale dont l'élément sera affiché.problème Android lors de la suppression d'élément de listview
S'il vous plaît voir mon code adpater ci-dessous
public class JobCartListAdapter extends BaseAdapter {
protected LayoutInflater mInflater;
public JobCartListAdapter(Context mContext) {
super();
this.mContext = mContext;
mInflater = LayoutInflater.from(mContext);
}
Context mContext;
@Override
public int getCount() {
// TODO Auto-generated method stub
return JobsManager.JobsCartList.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.job_cart_row, null);
holder = new ViewHolder();
holder.text1 = (TextView) convertView.findViewById(R.id.title);
holder.delete = (ImageButton)convertView.findViewById(R.id.delete);
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("Remove from" , "" + position);
JobsManager.JobsCartList.remove(position) ;
notifyDataSetChanged();
}
});
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.text1.setText(JobsManager.JobsCartList.get(position).getTitle());
return convertView;
}
static class ViewHolder {
TextView text1;
ImageButton delete;
}
}
la question que je suis confronté est:
quand je presse delet pour la firstime, la position dans la liste est correcte et l'élément est supprimé et la liste est actualisée
Lorsque je clique de nouveau sur une ligne dans la liste actualisée, la position correspondante transmise à getview n'est pas correcte. Donc, cela conduit à un index hors de l'exception liée que cette position est utilisée comme index pour la liste. J'ai vérifié ma liste et il est correctement mis à jour sur ajouter et supprimer. C'est le problème avec l'adaptateur de liste. Après l'actualisation de la liste avec appel de notifystatechanged, quand une ligne est cliquée, la position de la ligne retournée n'est pas correcte.
s'il vous plaît aider
can u pls expliquer ce que signifie réellement cet "adaptateur". – png
Désolé préetha mon erreur en fait votre converview étant réutilisé et le onclicklistener de suppression est en train de maintenir l'ancienne position donc faites une chose définir la position comme tag pour supprimer le bouton comme 'delete.setTag (position +" ") ; '& dans l'écouteur de clic obtenir cette étiquette de bouton et supprimer également dans getview si converview n'est pas nul, puis extraire le bouton de suppression de converView et mettre à nouveau la balise –
oui, le problème était dû à la réutilisation de converview. J'ai changé cela pour ne pas réutiliser car cela semblait plus facile. Merci beaucoup. – png