如何将按钮绑定到 recyclerview 中的块
How to bind a button to a block in recyclerview
我有一个RecyclerView
。
一个块包含来自多个改造响应的行和按钮。
当您单击该块时,该块有一个 ImageView,应删除该块。
但它并没有删除它所在的块,而是顺便将它们添加到数据库中。
如何将此按钮绑定到它所在的块。
他们都有一个link个人号码。
这是图像按钮方法:
public void DeletePn() {
DeletePnRequest deletePnRequest = new DeletePnRequest();
deletePnRequest.setPnumber(this.pnumber.trim());
Call<DeletePnResponse> deletePnResponseCall = ApiClient.getUserService().delPn(deletePnRequest, token);
deletePnResponseCall.enqueue(new Callback<DeletePnResponse>() {
@Override
public void onResponse(Call<DeletePnResponse> call, Response<DeletePnResponse> response) {
if(response.isSuccessful()){
DeletePnResponse deletePnResponse = response.body();
assert deletePnResponse != null;
msg = deletePnResponse.getMessage();
Toast.makeText(PersonalNumberActivity.this, msg, Toast.LENGTH_LONG).show();
recreate();
} else {
Toast.makeText(PersonalNumberActivity.this, "Error " + response.code(), Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<DeletePnResponse> call, Throwable t) {
}
});
}
这是 RecyclerView
适配器
private List<PersNumResponse> persNumResponseList;
private Context context;
public void setData(List<PersNumResponse> persNumResponseList) {
this.persNumResponseList = persNumResponseList;
notifyDataSetChanged();
}
@NonNull
@Override
public AdapterVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext();
return new Adapter.AdapterVH(LayoutInflater.from(context).inflate(R.layout.recycler_view_row, parent, false));
}
@Override
public void onBindViewHolder(@NonNull AdapterPn4PayVH holder, int position) {
PersNumResponse persPayResponse = persNumResponseList.get(position);
String pnumber = persNumResponse.getPnumber();
String city = persNumResponse.getCity();
String street = persNumResponse.getStreet();
String house = persNumResponse.getHouse();
holder.pnumber.setText(pnumber);
holder.city.setText(city);
holder.street.setText(street);
holder.house.setText(house);
}
@Override
public int getItemCount() {
return persNumResponseList.size();
}
public class AdapterVH extends RecyclerView.ViewHolder {
TextView pnumber;
TextView city;
TextView street;
TextView house;
public AdapterVH(@NonNull View itemView) {
super(itemView);
pnumber = itemView.findViewById(R.id.pnumber);
city = itemView.findViewById(R.id.city);
street= itemView.findViewById(R.id.street);
house = itemView.findViewById(R.id.house);
//this button
del_pn_btn = itemView.findViewById(R.id.del_pn_btn);
del_pn_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(context instanceof PersonalNumberActivity){
((PersonalNumberActivity)context).DeletePn();
}
}
});
}
}
尝试将 pnumber
值添加为 DeletePn
方法的参数并移动 Button 的初始化
setOnClickListener
在 onBindViewHolder
方法中:
public void DeletePn(String pnumber) {
...
deletePnRequest.setPnumber(pnumber.trim());
...
}
回收器视图适配器
@Override
public void onBindViewHolder(@NonNull AdapterPn4PayVH holder, int position) {
PersNumResponse persPayResponse = persNumResponseList.get(position);
String pnumber = persNumResponse.getPnumber();
String city = persNumResponse.getCity();
String street = persNumResponse.getStreet();
String house = persNumResponse.getHouse();
holder.pnumber.setText(pnumber);
holder.city.setText(city);
holder.street.setText(street);
holder.house.setText(house);
holder.del_pn_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(context instanceof PersonalNumberActivity){
((PersonalNumberActivity)context).DeletePn(pnumber);
}
}
});
}
...
public class AdapterVH extends RecyclerView.ViewHolder {
TextView pnumber;
TextView city;
TextView street;
TextView house;
Button del_pn_btn;
public AdapterVH(@NonNull View itemView) {
super(itemView);
pnumber = itemView.findViewById(R.id.pnumber);
city = itemView.findViewById(R.id.city);
street= itemView.findViewById(R.id.street);
house = itemView.findViewById(R.id.house);
del_pn_btn = itemView.findViewById(R.id.del_pn_btn);
}
}
我有一个RecyclerView
。
一个块包含来自多个改造响应的行和按钮。
当您单击该块时,该块有一个 ImageView,应删除该块。
但它并没有删除它所在的块,而是顺便将它们添加到数据库中。
如何将此按钮绑定到它所在的块。
他们都有一个link个人号码。
这是图像按钮方法:
public void DeletePn() {
DeletePnRequest deletePnRequest = new DeletePnRequest();
deletePnRequest.setPnumber(this.pnumber.trim());
Call<DeletePnResponse> deletePnResponseCall = ApiClient.getUserService().delPn(deletePnRequest, token);
deletePnResponseCall.enqueue(new Callback<DeletePnResponse>() {
@Override
public void onResponse(Call<DeletePnResponse> call, Response<DeletePnResponse> response) {
if(response.isSuccessful()){
DeletePnResponse deletePnResponse = response.body();
assert deletePnResponse != null;
msg = deletePnResponse.getMessage();
Toast.makeText(PersonalNumberActivity.this, msg, Toast.LENGTH_LONG).show();
recreate();
} else {
Toast.makeText(PersonalNumberActivity.this, "Error " + response.code(), Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(Call<DeletePnResponse> call, Throwable t) {
}
});
}
这是 RecyclerView
适配器
private List<PersNumResponse> persNumResponseList;
private Context context;
public void setData(List<PersNumResponse> persNumResponseList) {
this.persNumResponseList = persNumResponseList;
notifyDataSetChanged();
}
@NonNull
@Override
public AdapterVH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext();
return new Adapter.AdapterVH(LayoutInflater.from(context).inflate(R.layout.recycler_view_row, parent, false));
}
@Override
public void onBindViewHolder(@NonNull AdapterPn4PayVH holder, int position) {
PersNumResponse persPayResponse = persNumResponseList.get(position);
String pnumber = persNumResponse.getPnumber();
String city = persNumResponse.getCity();
String street = persNumResponse.getStreet();
String house = persNumResponse.getHouse();
holder.pnumber.setText(pnumber);
holder.city.setText(city);
holder.street.setText(street);
holder.house.setText(house);
}
@Override
public int getItemCount() {
return persNumResponseList.size();
}
public class AdapterVH extends RecyclerView.ViewHolder {
TextView pnumber;
TextView city;
TextView street;
TextView house;
public AdapterVH(@NonNull View itemView) {
super(itemView);
pnumber = itemView.findViewById(R.id.pnumber);
city = itemView.findViewById(R.id.city);
street= itemView.findViewById(R.id.street);
house = itemView.findViewById(R.id.house);
//this button
del_pn_btn = itemView.findViewById(R.id.del_pn_btn);
del_pn_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(context instanceof PersonalNumberActivity){
((PersonalNumberActivity)context).DeletePn();
}
}
});
}
}
尝试将 pnumber
值添加为 DeletePn
方法的参数并移动 Button 的初始化
setOnClickListener
在 onBindViewHolder
方法中:
public void DeletePn(String pnumber) {
...
deletePnRequest.setPnumber(pnumber.trim());
...
}
回收器视图适配器
@Override
public void onBindViewHolder(@NonNull AdapterPn4PayVH holder, int position) {
PersNumResponse persPayResponse = persNumResponseList.get(position);
String pnumber = persNumResponse.getPnumber();
String city = persNumResponse.getCity();
String street = persNumResponse.getStreet();
String house = persNumResponse.getHouse();
holder.pnumber.setText(pnumber);
holder.city.setText(city);
holder.street.setText(street);
holder.house.setText(house);
holder.del_pn_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(context instanceof PersonalNumberActivity){
((PersonalNumberActivity)context).DeletePn(pnumber);
}
}
});
}
...
public class AdapterVH extends RecyclerView.ViewHolder {
TextView pnumber;
TextView city;
TextView street;
TextView house;
Button del_pn_btn;
public AdapterVH(@NonNull View itemView) {
super(itemView);
pnumber = itemView.findViewById(R.id.pnumber);
city = itemView.findViewById(R.id.city);
street= itemView.findViewById(R.id.street);
house = itemView.findViewById(R.id.house);
del_pn_btn = itemView.findViewById(R.id.del_pn_btn);
}
}