Когда я добавляю кнопки в RecyclerView и нажимается верхняя кнопка, почему другие кнопки в нижней части представления таAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Когда я добавляю кнопки в RecyclerView и нажимается верхняя кнопка, почему другие кнопки в нижней части представления та

Сообщение Anonymous »

Когда я нажимаю кнопки в представлении, при прокрутке автоматически нажимаются другие кнопки внизу представления. Как я могу гарантировать, что нажата только одна кнопка, и сохранить состояние ранее нажатых кнопок?
Адаптер и 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Bootstrap Table проглатывает тег нижней части нижней части в основной тег
    Anonymous » » в форуме Html
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Bootstrap Table проглатывает тег нижней части нижней части в основной тег
    Anonymous » » в форуме CSS
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Bootstrap Table проглатывает тег нижней части нижней части в основной тег
    Anonymous » » в форуме Html
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Bootstrap Table проглатывает тег нижней части нижней части в основной тег
    Anonymous » » в форуме CSS
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Неожиданное заполнение нижней части нижней панели приложений в Android
    Anonymous » » в форуме Android
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»