我想在长按时删除 ListView 上的项目

I want to delete items on ListView when longpressed

我想在长按时删除 listView 上的项目。在此代码中,您可以添加(使用 edittext)带有按钮的列表项,如下所示。

我一直写不出长按删除的代码。我该怎么办?

理想情况下,长按会弹出一个菜单,用户可以触摸并删除他们想要的部分。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    editText = (EditText) findViewById(R.id.editText);
    addButton = (Button) findViewById(R.id.addButton);
    listView = (ListView) findViewById(R.id.listView);
    listItems = new ArrayList<String>();
    listItems.add("First Item - added on Activity Create");
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, listItems);
    listView.setAdapter(adapter);
    addButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            listItems.add(editText.getText().toString());
            adapter.notifyDataSetChanged();
        }
    });
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position,
                                long id) {
            Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_LONG)
                    .show();
        }
    });
}

试试这个:

listView.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long arg3) {

              adapter.remove(data[position]);//position of the item you click
              adapter.notifyDataSetChanged();

        return false;
    }

});

你可以用动画来做:

listView.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long arg3) {

              adapter.remove(data[position]);//position of the item you click
              adapter.notifyItemRemoved(position);

        return false;
    }

});

将此用于长按列表视图项目删除,当您从列表视图中删除任何项目时,它应该显示警告对话框

listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

            removeItemFromList(position);
            return true;
        }

        private void removeItemFromList(int position) {

            final int deletePosition = position;

            AlertDialog.Builder alert = new AlertDialog.Builder(
                    this);

            alert.setTitle("Delete");
            alert.setMessage("Do you want delete this item?");
            alert.setPositiveButton("YES", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TOD O Auto-generated method stub

                    // main code on after clicking yes
                    songsList.remove(deletePosition);
                    songAdapter.notifyDataSetChanged();
                    songAdapter.notifyDataSetInvalidated();

                }
            });
            alert.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.dismiss();
                }
            });

            alert.show();
        }