I'm having some troubles while trying to remove an item from the list view on long click. Below is the code:
public class MListViewActivity extends ListActivity {
private ListView lv;
private String[] some_data = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
some_data = getResources().getStringArray(R.array.mdata);
// Bind resources Array to ListAdapter
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(this,
R.layout.list_item, R.id.label, some_data);
this.setListAdapter(myAdapter);
lv = getListView();
lv.setDividerHeight(3);
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int arg2, long arg3) {
// Can't manage to remove an item here
return false;
}
});
}
Any help is appreciated
try
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long arg3) {
myAdapter.remove(some_data[position]);
myAdapter.notifyDataSetChanged();
return false;
}
});
You shouldn't use Arrays
, you should use ArrayList
to remove and add items to a Listview
.
Once the Array size is declared you can modify the data in particular index but cannot remove the items or add to it.
So Take an ArrayList and just when you long click on the ListView Item, just call remove method of Arraylist and notify the data set changed.
Example:
ArrayList<String> al = new ArrayList<String>();
inside your longclick write the below code to remove item.
al.remove(arg2);//where arg2 is position of item you click
myAdapter.notifyDataSetChanged();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With