Адаптер и xml прилагаются`
публичный класс SingleAdapter расширяет RecyclerView.Adapter {
Код: Выделить всё
private Context context;
private ArrayList employees;
// if checkedPosition = -1, there is no default selection
// if checkedPosition = 0, 1st item is selected by default
private int checkedPosition = 0;
public SingleAdapter(Context context, ArrayList employees) {
this.context = context;
this.employees = employees;
}
public void setEmployees(ArrayList employees) {
this.employees = new ArrayList();
this.employees = employees;
notifyDataSetChanged();
}
@NonNull
@Override
public SingleViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.item_employee, viewGroup, false);
return new SingleViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull SingleViewHolder singleViewHolder, int position) {
singleViewHolder.bind(employees.get(position));
}
@Override
public int getItemCount() {
return employees.size();
}
class SingleViewHolder extends RecyclerView.ViewHolder {
private TextView textView;
private ImageView imageView;
private Button yesbutton;
private Button nobutton;
SingleViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
imageView = itemView.findViewById(R.id.imageView);
yesbutton = itemView.findViewById(R.id.yesbutton);
nobutton = itemView.findViewById(R.id.nobutton);
}
void bind(final Employee employee) {
if (checkedPosition == -1) {
imageView.setVisibility(View.GONE);
yesbutton.setOnClickListener(null);
nobutton.setOnClickListener(null);
} else {
if (checkedPosition == getAdapterPosition()) {
imageView.setVisibility(View.VISIBLE);
} else {
imageView.setVisibility(View.GONE);
yesbutton.setOnClickListener(null);
nobutton.setOnClickListener(null);
}
}
textView.setText(employee.getName());
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
imageView.setVisibility(View.VISIBLE);
if (checkedPosition != getAdapterPosition()) {
notifyItemChanged(checkedPosition);
checkedPosition = getAdapterPosition();
}
}
});
nobutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
employee.setYesButtonColor(Color.RED);
employee.setNoButtonColor(Color.GREEN);
yesbutton.setBackgroundColor(employee.getYesButtonColor());
nobutton.setBackgroundColor(employee.getNoButtonColor());
}
});
yesbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
employee.setYesButtonColor(Color.GREEN);
employee.setNoButtonColor(Color.RED);
yesbutton.setBackgroundColor(employee.getYesButtonColor());
nobutton.setBackgroundColor(employee.getNoButtonColor());
if (checkedPosition != getAdapterPosition()) {
if(employee.getYesButtonColor() != null) {
yesbutton.setBackgroundColor(employee.getYesButtonColor());
}
if(employee.getNoButtonColor() != null) {
nobutton.setBackgroundColor(employee.getNoButtonColor());
}
}
}
});
}
}
public Employee getSelected() {
if (checkedPosition != -1) {
return employees.get(checkedPosition);
}
return null;
}
< pre class="snippet-code-html lang-html Prettyprint-override">
Код: Выделить всё
Подробнее здесь: https://stackoverflow.com/questions/791 ... sed-why-do