Как получить значение из положения адаптера RecyclerView - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть 2 элемента данных, где данные имеют разные идентификаторы. Когда я нажимаю переключатель, затем получаю идентификатор по позиции.

Пример: у меня есть 2 элемента данных, первый идентификатор 57, а второй идентификатор 59. Когда я нажимаю на первые данные, они должны получить значение 57 или когда я нажимаю на вторые данные, они должны получить значение 59.

private String convertAddressID;
private int previousSelected = -1;
private boolean isRadioChecked;

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    ModelGetAddress adapterAddress = modelGetAddressList.get(position);

    convertAddressID = String.valueOf(adapterAddress.getId());
}

public class ViewHolder extends RecyclerView.ViewHolder {
    private RadioButton radioButton;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        radioButton = itemView.findViewById(R.id.radioButton);

        radioButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                previousSelected = getAdapterPosition();
                notifyItemRangeChanged(0, modelGetAddressList.size());

                Toast.makeText(getContext, convertAddressID, Toast.LENGTH_SHORT).show();
            }
        });
    }
}

Ответы [ 2 ]

1 голос
/ 29 февраля 2020

@ Переопределить публикацию c void onBindViewHolder (@NonNull окончательный держатель ViewHolder, конечная позиция int) {ModelGetAddress adapterAddress = modelGetAddressList.get (position);

    convertAddressID = String.valueOf(adapterAddress.getId());
}

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    private RadioButton radioButton;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        radioButton = itemView.findViewById(R.id.radioButton);
        itemView.setOnClickListener(this);


    }

    @Override
    public void onClick(View view) {
        int position=getAdapterPosition();
        Toast.makeText(conext, ""+modelGetAddressList.get(position).getId(), Toast.LENGTH_SHORT).show();

    }
}
0 голосов
/ 28 февраля 2020

Вы можете установить onClickListener в onBindViewHolder, где у вас всегда есть позиция. Вызовите findViewById в классе ViewHolder. Попробуйте что-то вроде этого мой (непроверенный) код:

@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    ((ViewHolder)holder).button.setOnClickListener(...)
}
 public class ViewHolder extends RecyclerView.ViewHolder {
        Button button;

        ViewHolderContent(@NonNull View itemView) {
            super(itemView);
            button= itemView.findViewById(R.id.button);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...