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