[英]How to update textview in recycler view on button click?
每当我单击“喜欢”按钮时,我都想为列表项创建一个“喜欢”按钮,那么textview应该会动态更新。但是当我单击“按钮”时,只有最后一行会更新,其余的不会更改。请指导我完成此任务在listitems中制作like button的方法。(我已经为like button使用了likebutton库)。
RecyclerViewAdapter.java
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{
private static final String TAG = "hh";
private String[] names;
private String[] desc;
private Integer[] imageid;
private Context context1;
ImageButton sare;
public ImageView img;
LikeButton likeButton;
TextView tx1;
TextView tx2;
TextView tx3;
TextView tx4;
public RecyclerViewAdapter(Context context2,String[] names,String[] desc,Integer[] imageid){
this.names = names;
this.desc = desc;
this.imageid = imageid;
context1 = context2;
}
public class ViewHolder extends RecyclerView.ViewHolder{
public LikeButton likeButton;
public ViewHolder(View v){
super(v);
}
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View view1 = LayoutInflater.from(context1).inflate(R.layout.recycler_view_items,parent,false);
ViewHolder viewHolder1 = new ViewHolder(view1);
img = (ImageView) view1.findViewById(R.id.imgview1);
likeButton = (LikeButton) view1.findViewById(R.id.cvcv);
tx3 = (TextView)view1.findViewById(R.id.counttxt);
likeButton.setOnLikeListener(new OnLikeListener() {
@Override
public void liked(LikeButton likeButton) {
int count = Integer.parseInt(tx3.getText().toString());
Log.d("fgfgfgfgf", String.valueOf(count));
tx3.setText(String.valueOf(++count));
//tx3.setText(String.valueOf(Homefragment.countt));
}
@Override
public void unLiked(LikeButton likeButton) {
}
});
return viewHolder1;
}
@Override
public void onBindViewHolder(ViewHolder Vholder,final int position){
if(imageid[position] != null) {
// img.setImageBitmap(imageid[position]);
}
else{
}
img.setImageResource(imageid[position]);
tx1.setText(names[position]);
Vholder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public int getItemCount(){
return desc.length;
}
}
recycler_view_items.xml
<ConstraintLayout>
............
<LikeButton>
....
</LikeButton>
<TextView>
....
</TextView>
</ConstraintLayout>
更换
tx3 = (TextView)view1.findViewById(R.id.counttxt);
与
TextView tx3 = (TextView)view1.findViewById(R.id.counttxt);
和
likeButton = (LikeButton) view1.findViewById(R.id.cvcv);
与
LikeButton likeButton = (LikeButton) view1.findViewById(R.id.cvcv);
在你的代码都使用相同的instance
的tx3
和likebutton
,并将它保存的最后一个值,希望这有助于
public class ViewHolder extends RecyclerView.ViewHolder{
LikeButton likeButton;
TextView tx1;
TextView tx2;
TextView tx3;
TextView tx4;
public ViewHolder(View v){
super(v);
img = (ImageView) v.findViewById(R.id.imgview1);
likeButton = (LikeButton) v.findViewById(R.id.cvcv);
tx3 = (TextView)v.findViewById(R.id.counttxt);
}
}
将您的OnCreateviewHolder更改为:-
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
View view1 = LayoutInflater.from(context1).inflate(R.layout.recycler_view_items,parent,false);
return new ViewHolder(view1);
}
OnBindViewHolder到:-
@Override
public void onBindViewHolder(ViewHolder Vholder,final int position){
Vholder.img.setImageResource(imageid[position]);
Vholder.tx1.setText(names[position]);
Vholder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
Vholder.likeButton.setOnLikeListener(new OnLikeListener() {
@Override
public void liked(LikeButton likeButton) {
//Logic
}
@Override
public void unLiked(LikeButton likeButton) {
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.