PEGA技术咨询:如何通过UI行尾删除按钮结合Activity按主键删表行
Android 表格行添加删除按钮并实现删除功能步骤
一、布局文件修改
创建列表项布局(
row_item.xml)
每个表格行包含数据展示控件和末尾的删除按钮:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_vertical" android:padding="8dp"> <!-- 表格列1:姓名 --> <TextView android:id="@+id/tv_name" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="16sp"/> <!-- 表格列2:年龄 --> <TextView android:id="@+id/tv_age" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:textSize="16sp"/> <!-- 删除按钮 --> <Button android:id="@+id/btn_delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="删除" android:textSize="14sp" android:backgroundTint="#FF4444" android:textColor="#FFFFFF"/> </LinearLayout>Activity主布局(
activity_main.xml)
添加RecyclerView用于展示表格:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_table" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
二、逻辑代码实现
创建数据实体类(
User.java)
存储表格每行的数据:public class User { private String name; private String age; public User(String name, String age) { this.name = name; this.age = age; } // Getter方法 public String getName() { return name; } public String getAge() { return age; } }实现RecyclerView适配器(
TableAdapter.java)
绑定数据并给删除按钮设置点击事件,实现行删除逻辑:public class TableAdapter extends RecyclerView.Adapter<TableAdapter.TableViewHolder> { private List<User> userList; public TableAdapter(List<User> userList) { this.userList = userList; } @NonNull @Override public TableViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.row_item, parent, false); return new TableViewHolder(itemView); } @Override public void onBindViewHolder(@NonNull TableViewHolder holder, int position) { User currentUser = userList.get(position); holder.tvName.setText(currentUser.getName()); holder.tvAge.setText(currentUser.getAge()); // 删除按钮点击监听 holder.btnDelete.setOnClickListener(v -> { // 移除当前位置的数据 userList.remove(position); // 通知列表更新,保留平滑动画 notifyItemRemoved(position); notifyItemRangeChanged(position, userList.size()); }); } @Override public int getItemCount() { return userList.size(); } // 内部ViewHolder类 static class TableViewHolder extends RecyclerView.ViewHolder { TextView tvName, tvAge; Button btnDelete; public TableViewHolder(@NonNull View itemView) { super(itemView); tvName = itemView.findViewById(R.id.tv_name); tvAge = itemView.findViewById(R.id.tv_age); btnDelete = itemView.findViewById(R.id.btn_delete); } } }Activity初始化逻辑(
MainActivity.java)
初始化数据并配置RecyclerView:public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private TableAdapter adapter; private List<User> userList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recycler_table); // 初始化模拟数据 userList = new ArrayList<>(); userList.add(new User("张三", "25")); userList.add(new User("李四", "30")); userList.add(new User("王五", "28")); // 设置RecyclerView布局管理器(线性布局模拟表格) recyclerView.setLayoutManager(new LinearLayoutManager(this)); adapter = new TableAdapter(userList); recyclerView.setAdapter(adapter); } }
效果说明
每行末尾的红色"删除"按钮,点击后对应行会平滑从列表中移除,同时数据集合同步更新。
效果截图示例:
表格行带删除按钮效果
内容的提问来源于stack exchange,提问作者Kasun98
相关产品推荐
相关产品推荐

