gpt4 book ai didi

android - Recyclerview 单项选择器

转载 作者:太空狗 更新时间:2023-10-29 16:11:14 25 4
gpt4 key购买 nike

我为我的 RecyclerView 项目添加了一个选择器背景,但我需要一次只允许选择一个项目。也就是说,如果选择了一个项目,则不得选择所有其余项目。我怎样才能做到这一点?

这是我的适配器类

public class VisaTypeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

Context context;
private List<VisaType> visaTypeList;

int selected_position;


public VisaTypeAdapter(Context context, List<VisaType> visaTypeList) {
this.context = context;
this.visaTypeList = visaTypeList;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.visa_type_row, parent, false);
return new jp.workjapan.adapters.VisaTypeAdapter.ViewHolder(view);

}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
final VisaType a = visaTypeList.get(position);
final jp.workjapan.adapters.VisaTypeAdapter.ViewHolder viewHolder = (jp.workjapan.adapters.VisaTypeAdapter.ViewHolder) holder;
viewHolder.visa_eng.setText(a.getName_en());
viewHolder.visa_jp.setText(a.getName_jp());


final long id = a.getId();
if (id == AppSingleTon.visaType) {
viewHolder.visa_layout.setSelected(true);
} else {
viewHolder.visa_layout.setSelected(false);
}


viewHolder.visa_layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (viewHolder.visa_layout.isSelected()) {
viewHolder.visa_layout.setSelected(false);


} else {

viewHolder.visa_layout.setSelected(true);
AppSingleTon.visaType = id;
selected_position = position;


}


}
});

}

}

最佳答案

这是我的示例解决方案:

public class VisaTypeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

Context context;
private List<VisaType> visaTypeList;

int selected_position;


public VisaTypeAdapter(Context context, List<VisaType> visaTypeList) {
this.context = context;
this.visaTypeList = visaTypeList;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.visa_type_row, parent, false);
return new jp.workjapan.adapters.VisaTypeAdapter.ViewHolder(view);

}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
final VisaType a = visaTypeList.get(position);
final jp.workjapan.adapters.VisaTypeAdapter.ViewHolder viewHolder = (jp.workjapan.adapters.VisaTypeAdapter.ViewHolder) holder;
viewHolder.visa_eng.setText(a.getName_en());
viewHolder.visa_jp.setText(a.getName_jp());


final long id = a.getId();
if (id == AppSingleTon.visaType) {
viewHolder.visa_layout.setSelected(true);
} else {
viewHolder.visa_layout.setSelected(false);
}

if (position == selected_position) {
viewHolder.visa_layout.setSelected(true);
} else {
viewHolder.visa_layout.setSelected(false);
}

viewHolder.visa_layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selected_position = getAdapterPosition();
notifyDataSetChanged();
}
});

}

}

希望对你有帮助...谢谢

关于android - Recyclerview 单项选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47863967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com