自学内容网 自学内容网

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为选中状态。

原文地址:https://blog.csdn.net/Chen_xiaobao/article/details/143686655

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!