voglio eliminare una certa riga da una listView quando un ImageView viene cliccato. Il mio listview assomiglia a questo: removeView (Vedi) non è supportata in AdapterView
Voglio che quando viene cliccata l'ultima immagine per eliminare quella riga. Qui è il mio adattatore:
public class UserItemAdapter extends ArrayAdapter<Photos.Record> {
private ArrayList<Photos.Record> photos;
public UserItemAdapter(Context context, int textViewResourceId, ArrayList<Photos.Record> photos) {
super(context, textViewResourceId, photos);
this.photos = photos;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.photorowlist, null);
v.setClickable(true);
v.setFocusable(true);
}
Photos.Record user = photos.get(position);
if (user != null) {
TextView photo_name = (TextView) v.findViewById(R.id.photoname);
if (photo_name != null) {
photo_name.setText(user.photo_name);
}
}
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//Toast.makeText(view.getContext(), "Clicked", Toast.LENGTH_SHORT).show();
ImageView delete_photo = (ImageView) view.findViewById(R.id.deletephoto);
delete_photo.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(Photos.this, "Delete Button Clicked", Toast.LENGTH_SHORT).show();
listView.removeView(v);
myadapter.notifyDataSetChanged();
}});
}
});
return v;
}
}
public class Record {
public String photo_name;
public Record(String photo_name) {
this.photo_name = photo_name;
}
}
ho cercato di eliminare la riga con questa:
listView.removeView(v);
myadapter.notifyDataSetChanged();
e ottengo l'errore: ERROR AndroidRuntime java.lang.UnsupportedOperationException: removeView(View) is not supported in AdapterView
Dov'è il mio mystake? Qualche idea?
No, ma penso che tu stia facendo la strada sbagliata. Non dovresti scrivere il tuo ClickListener nel tuo adattatore ma nella tua attività (o frammento). Quindi imposti un OnItemClickListener per la tua vista ed elimina qui la tua foto. Non sono sicuro che io sia chiaro, ma si dovrebbe avere uno sguardo su [blog di Cyril Mottier] (http://android.cyrilmottier.com/?p=525) – AMerle
ho provato tale soluzione (rimuovendo i dati dal arraylist dell'adattatore e poi rinfrescante) ma non ha funzionato. Aperto un altro problema qui: http://stackoverflow.com/questions/38250987/removing-an-item-from-the-dropdown-list-of-a-baseadapter –