android - removing item from ListView on long click

☆樱花仙子☆ 提交于 2019-12-03 18:02:03

问题


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


回答1:


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();



回答2:


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

});



回答3:


I had issues using this method. and i solved it using this.

            listStat.remove(listStat.get(arg2));
            lvStat.requestLayout();
            adapterStat.notifyDataSetChanged();

I think this will help to others.



来源:https://stackoverflow.com/questions/14340579/android-removing-item-from-listview-on-long-click

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!