Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android - removing item from ListView on long click

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

like image 989
Droidman Avatar asked Jan 15 '13 15:01

Droidman


2 Answers

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;
    }

});
like image 94
Georgy Gobozov Avatar answered Sep 22 '22 18:09

Georgy Gobozov


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();
like image 45
TNR Avatar answered Sep 25 '22 18:09

TNR