Android 动态表格与可选中功能实现

在Android开发中,动态表格是一种常见的UI需求,尤其是在需要展示可变数量数据时,比如在购物车、数据管理系统或统计数据展示中。本文将讲解如何创建一个动态表格,并实现可选中行的功能。

1. 动态表格的概念

动态表格是指根据实际数据的变化,能够自动增减行和列的表格。在Android中,我们通常使用 RecyclerView 来实现这种灵活的布局。

2. 代码示例

2.1 依赖项

首先确保在项目的 build.gradle 文件中添加了必要的依赖:

implementation 'androidx.recyclerview:recyclerview:1.2.1'

2.2 表格布局

我们可以使用 RecyclerView 来构建表格项目的列表。下面是一个基本的 RecyclerView 布局示例:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

2.3 适配器实现

使用适配器来绑定数据与视图。在适配器中,我们可以实现行的选择功能。

public class TableAdapter extends RecyclerView.Adapter<TableAdapter.ViewHolder> {
    private List<String> mData;
    private Set<Integer> selectedPositions = new HashSet<>();

    public TableAdapter(List<String> data) {
        this.mData = data;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_table_row, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.bind(mData.get(position), selectedPositions.contains(position));
        holder.itemView.setOnClickListener(v -> {
            if (selectedPositions.contains(position)) {
                selectedPositions.remove(position);
            } else {
                selectedPositions.add(position);
            }
            notifyItemChanged(position);
        });
    }

    @Override
    public int getItemCount() {
        return mData.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        TextView textView;

        public ViewHolder(View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.text_view);
        }

        void bind(String text, boolean isSelected) {
            textView.setText(text);
            itemView.setBackgroundColor(isSelected ? Color.LTGRAY : Color.WHITE);
        }
    }
}

2.4 使用适配器

在你的活动中,使用 RecyclerViewTableAdapter来展示表格数据:

RecyclerView recyclerView = findViewById(R.id.recycler_view);
List<String> data = new ArrayList<>(Arrays.asList("Row1", "Row2", "Row3"));
TableAdapter adapter = new TableAdapter(data);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);

3. 旅行图

下面是一个旅行图的示例,用于形象地展示用户在表格中的选择过程。

journey 
    title 用户选择表格行的过程
    section 选择行
      用户点击Row1: 5: User
      用户点击Row2: 4: User
    section 取消选择
      用户取消选择Row1: 3: User

4. 状态图

以下是一个状态图,显示用户在选择过程中的状态。

stateDiagram
    [*] --> 单选
    单选 --> 选中
    选中 --> 单选: 取消选择
    单选 --> [*]

结尾

通过本文的讲解,您应该能够理解如何在Android中构建一个动态表格,并实现行的可选中功能。使用 RecyclerView 和适配器模式不仅提高了性能,还能为用户提供良好的互动体验。希望这篇文章能够帮助您在Android开发中更好地使用动态表格。