J'essaie de supprimer une ligne lorsque l'utilisateur clique sur le bouton pour supprimer. Le problème auquel je suis confronté est que si je supprime une ligne, il supprime la dernière ligne sur l'interface utilisateur. J'ai un adaptateur avec l'Arraylist. Au clic, je supprime l'élément de l'arraylist et appelle notifydatasetchanged. Le débogage je vois que bon article a été supprimé mais l'assurance-chômage, je vois que la dernière ligne ne se voit pas (la ligne supprimée peut encore être vu)Android listview Supprimer la ligne ne fonctionne pas
public class MenuDetailsAdapter extends BaseAdapter {
private Activity activity;
private LayoutInflater inflater;
private List<MenuItem> menuItems;
private View userView,itemView ;
public MenuDetailsAdapter(Activity activity, List<MenuItem> menuItems) {
this.activity=activity;
this.menuItems = menuItems;
}
@Override
public int getCount() {
return menuItems.size();
}
@Override
public Object getItem(int pos) {
return menuItems.get(pos);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (inflater == null) {
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if(convertView==null)
{
convertView= inflater.inflate(R.layout.menu_card_row, null);
ImageView im= (ImageView) convertView.findViewById(R.id.btnRemoveItemRow);
im.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menuItems.remove(position);
notifyDataSetChanged();
}
});
TextView tvItemName=(TextView) convertView.findViewById(R.id.tvItem_name);
tvItemName.setText(((MenuItem) getItem(position)).getName());
TextView tvItemPrice=(TextView) convertView.findViewById(R.id.tvItemPrice);
tvItemPrice.setText(tvItemPrice.getText().toString()+ ((MenuItem) getItem(position)).getCost());
TextView tvItemQty=(TextView) convertView.findViewById(R.id.tvItem_qty);
tvItemQty.setText(tvItemQty.getText().toString()+ ((MenuItem) getItem(position)).getQuanity());
}
return convertView;
}
}
@jetty: plz ne supprimez point à l'intérieur listView.SetOnItemClickListener(). Dans le getView() mth vous verrez toujours la dernière rangée visible dans ListView – kevz
Problème lié à la méthode 'getView' utilisez ViewHolder dans la méthode getView. voir post suivant [Comment implémenter un support de vue?] (http://stackoverflow.com/questions/4145602/how-to-implement-a-view-holder) –
@jetty .... Vérifie ma réponse ... Cela peut être utile pour vous ... –