当前位置: 首页 > article >正文

Android在使用RecycylerView开发中,设置item单选效果,并且设置默认选中第一个

1、创建适配器类

  • 以下是一个完整的RecyclerView适配器类,用于实现类似于单选的效果并且默认选中第一个item:
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<String> dataList;
    private int selectedPosition = 0;

    public MyAdapter(List<String> data) {
        this.dataList = data;
    }

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

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        String data = dataList.get(position);
        holder.textView.setText(data);

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 更新选中位置
                selectedPosition = position;
                notifyDataSetChanged();
            }
        });

        // 根据选中位置设置背景颜色
        if (position == selectedPosition) {
            holder.itemView.setBackgroundColor(0xFFFF0000);
        } else {
            holder.itemView.setBackgroundColor(0xFFFFFFFF);
        }
    }

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

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

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(android.R.id.text1);
        }
    }
}
  • 在这个适配器类中,定义了一个变量selectedPosition来记录当前选中的item位置,初始值为0,这就实现了默认选中第一个item。
  • 在onBindViewHolder方法中,为每个item设置点击监听器。当item被点击时,更新selectedPosition为当前点击的位置,然后调用notifyDataSetChanged()来更新整个RecyclerView的所有item视图,这样可以确保只有一个item处于选中状态并且外观正确更新。
  • 根据position是否等于selectedPosition来设置item的背景颜色,以显示选中效果。

2、在Activity中使用适配器

以下是在Activity中使用上述适配器的示例代码:

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RecyclerView recyclerView = findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        List<String> dataList = new ArrayList<>();
        dataList.add("Item 1");
        dataList.add("Item 2");
        dataList.add("Item 3");

        MyAdapter adapter = new MyAdapter(dataList);
        recyclerView.setAdapter(adapter);
    }
}
  • 在Activity的onCreate方法中,首先找到RecyclerView,设置其布局管理器为LinearLayoutManager。然后创建数据列表,实例化适配器并将数据传递给它,最后将适配器设置给RecyclerView。这样就可以在RecyclerView中显示数据,并实现类似于单选的选中效果,且默认第一个item为选中状态。

http://www.kler.cn/a/394834.html

相关文章:

  • flinkOnYarn并配置prometheus+grafana监控告警
  • Pytest-Bdd-Playwright 系列教程(9):datatable 参数的使用
  • 第 13 章 -Go 语言 接口
  • 前端js用canvas合成图片并转file对象
  • 【WRF理论第十二期】输出文件:wrfout 和 wrfrst
  • 深入探索离散 Hopfield 神经网络
  • fastadmin多个表crud连表操作步骤
  • 《鸿蒙生态:开发者的机遇与挑战》
  • ddl/dml/dcl
  • 【计算机网络】【传输层】【习题】
  • 子集选择——基于R语言实现(最优子集选择法、逐步回归法、Lasso回归法、交叉验证法)
  • 通过vmware虚拟机安装和调试编译好的 ReactOS
  • 使用etl工具kettle的日常踩坑梳理之一、从mysql中导出数据
  • 【springboot使用sqlite数据库】Java后台同时使用mysql、sqlite
  • 零基础想学习 Web 安全,如何入门?
  • 深入探索 React Hooks:原理、用法与性能优化全解
  • nVisual自定义工单内容
  • 力扣第48题“旋转图像”
  • 计算机网络-2.1物理层
  • C++全局构造和初始化
  • 算法训练(leetcode)二刷第二十五天 | *134. 加油站、*135. 分发糖果、860. 柠檬水找零、*406. 根据身高重建队列
  • 24/11/14 算法笔记 EM算法期望最大化算法
  • CentOS网络配置
  • 利用飞书多维表格自动发布版本
  • Matlab实现麻雀优化算法优化随机森林算法模型 (SSA-RF)(附源码)
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】标题栏