Comment puis-je supprimer un élément de ma coutume adaptateur de base?
Je suis l'extension de BaseAdapter pour personnaliser un listview ligne. J'ai le menu contextuel qui s'ouvre a chaque fois qu'un utilisateur se tient sur la ligne et vous demande si il veut le supprimer. Cependant comment puis-je supprimer la ligne? La table de hachage est que des données de test.
private MyListAdapter myListAdapter;
private ArrayList<HashMap<String, String>> items;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
items = new ArrayList<HashMap<String,String>>();
HashMap<String, String> map1 = new HashMap<String, String>();
map1.put("date", "10/09/2011");
map1.put("distance", "309 km");
map1.put("duration", "1t 45min");
items.add(map1);
myListAdapter = new MyListAdapter(this, items);
setListAdapter(myListAdapter);
getListView().setOnCreateContextMenuListener(this);
}
private class MyListAdapter extends BaseAdapter {
private Context context;
private ArrayList<HashMap<String, String>> items;
public MyListAdapter(Context context, ArrayList<HashMap<String, String>> items) {
this.context = context;
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.row_log, null);
}
TextView rowLogOverview = (TextView) view.findViewById(R.id.rowLogOverview);
HashMap<String, String> item = items.get(position);
rowLogOverview.setText(item.get("date"));
return view;
}
}
OriginalL'auteur LuckyLuke | 2011-09-10
Vous devez vous connecter pour publier un commentaire.
De ne pas supprimer de la carte ! Vous supprimez des éléments ! et la carte est entre vos éléments et la vue. À partir de l'affichage vous pouvez obtenir la position et selon la position, vous pouvez supprimer des éléments. Puis l'adaptateur va vous rafraîchir vues.
Cela signifie que vous avez besoin de faire quelque chose comme ceci
adapter.notifyDataSetChanged()
à la carte liée àitems
sera mise à jour de la liste.OriginalL'auteur Lukap
À supprimer, vous aurez besoin de faire 2 choses:
.remove()
sur votre liste de tableaux (les éléments)..notifyDataSetChanged()
sur l'instance de votreMyListAdapter
classe (mListAdapter
).OriginalL'auteur SBerg413
BaseAdapter.notifyDataSetChanged()
. Puis listview sera redessiné et ligne cible sera supprimé de l'écran.OriginalL'auteur kingori
Vous devez ajouter un Listener sur l'adaptateur de la poignée de l'événement de suppression.
Et sur votre getView() la méthode définie à l'auditeur
Vous pouvez ajouter une valeur sur le btn étiquette pour repérer la ligne actuelle :
Enfin, sur votre Activité, votre écouteur du feu avec la position actuelle dans l'étiquette. Vous pouvez ensuite utiliser la question précédente pour mettre à jour votre adaptateur et actualiser votre liste.
OriginalL'auteur tryp