目录

-
- private final AdapterView.OnItemLongClickListener itemDeleteListener = new AdapterView.OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(AdapterView> parent, View view, final int position, long id) {
-
- // 确认删除对话框构建
- AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
- builder.setMessage("确认删除?");
-
- // 点击对话框的 确认 按钮后的操作
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- numList.remove(position); // 从 numList 中删除点击的列表项
- adapter.notifyDataSetChanged(); // 适配器数据刷新
- Toast.makeText(getBaseContext(), "已删除", Toast.LENGTH_SHORT).show();
- }
- });
-
- // 点击对话框的 取消 按钮后的操作
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // 无操作
- }
- });
-
- builder.create().show();
- return false;
- }
- };
- // 绑定监听器
- listView.setOnItemLongClickListener(itemDeleteListener);
1、XML
- "1.0" encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity">
-
- <ListView
- android:id="@+id/num_list"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
- RelativeLayout>
- "1.0" encoding="utf-8"?>
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <TextView
- android:id="@+id/item_number"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_margin="20dp"
- android:layout_centerHorizontal="true"
- android:text="number"
- android:textSize="30sp" />
-
- RelativeLayout>
2.Java
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ListView;
- import android.widget.Toast;
-
- import androidx.appcompat.app.AlertDialog;
- import androidx.appcompat.app.AppCompatActivity;
-
- import java.util.ArrayList;
-
- public class MainActivity extends AppCompatActivity {
-
- private final String[] num = new String[]{"1", "2", "3", "4", "5", "6", "7", "8"};
- private ArrayList
numList; - private Adapter adapter;
-
- /**
- * 长按删除列表项
- */
- private final AdapterView.OnItemLongClickListener itemDeleteListener = new AdapterView.OnItemLongClickListener() {
- @Override
- public boolean onItemLongClick(AdapterView> parent, View view, final int position, long id) {
-
- // 长按列表项的时候弹出 确认删除对话框
- AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
- builder.setMessage("确认删除?");
-
- // 点击对话框的 确认 按钮后的操作
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- numList.remove(position); // 从 numList 中删除点击的列表项
- adapter.notifyDataSetChanged(); // 适配器数据刷新
- Toast.makeText(getBaseContext(), "已删除", Toast.LENGTH_SHORT).show();
- }
- });
-
- // 点击对话框的 取消 按钮后的操作
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // 无操作
- }
- });
-
- builder.create().show();
- return false;
- }
- };
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- ListView listView = findViewById(R.id.num_list);
- numList = new ArrayList<>();
-
- for (int i = 0; i < num.length; i++) {
- numList.add(num[i]);
- }
-
- adapter = new Adapter(MainActivity.this, R.layout.item, numList);
- listView.setAdapter(adapter);
- listView.setOnItemLongClickListener(itemDeleteListener);
- }
- }
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.ArrayAdapter;
- import android.widget.TextView;
-
- import java.util.List;
-
- public class Adapter extends ArrayAdapter
{ - private final int resourceId;
-
- private static class ViewHolder {
- TextView tvNum;
- }
-
- public Adapter(Context context, int resourceId, List
data) { - super(context, resourceId, data);
- this.resourceId = resourceId;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- String num = getItem(position);
- final ViewHolder viewHolder;
- View view;
-
- if (convertView == null) {
- view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);
- viewHolder = new ViewHolder();
- viewHolder.tvNum = view.findViewById(R.id.item_number);
- view.setTag(viewHolder);
- } else {
- view = convertView;
- viewHolder = (ViewHolder) view.getTag();
- }
-
- viewHolder.tvNum.setText(num);
- return view;
- }
- }