[英]How to get value from position adapter RecyclerView
I have 2 data items where the data has different id.我有 2 个数据项,其中数据具有不同的 ID。 When i click radio button then getting id by position.
当我单击单选按钮然后按位置获取 id 时。
Example : I have 2 data items, the first id is 57 and the second id is 59. When I click on the first data it must get a value of 57 or when I click on the second data it must get a value of 59.示例:我有 2 个数据项,第一个 id 是 57,第二个 id 是 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();
}
});
}
}
@Override public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) { ModelGetAddress adapterAddress = modelGetAddressList.get(position); @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 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();
}
}
You can set the onClickListener in the onBindViewHolder where you always have the position.您可以在始终拥有位置的 onBindViewHolder 中设置 onClickListener。 Call the findViewById in the ViewHolder class.
在 ViewHolder 类中调用 findViewById。 Try something like this my (untested) code:
试试我的(未经测试的)代码:
@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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.