简体   繁体   English

单击按钮时如何在回收器视图中更新textview?

[英]How to update textview in recycler view on button click?

I want to make a like button for my list items whenever i click the like button then the textview should update dynamically.but when i click the button only the last row gets updated and the rest does not change.Please guide me to accomplish this task of making like button in listitems.(I have used likebutton library for like button). 每当我单击“喜欢”按钮时,我都想为列表项创建一个“喜欢”按钮,那么textview应该会动态更新。但是当我单击“按钮”时,只有最后一行会更新,其余的不会更改。请指导我完成此任务在listitems中制作like button的方法。(我已经为like button使用了likebutton库)。

RecyclerViewAdapter.java 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 recycler_view_items.xml

<ConstraintLayout>
............
<LikeButton>
....
</LikeButton>
<TextView>
....
</TextView>   
</ConstraintLayout>

Replace 更换

tx3 = (TextView)view1.findViewById(R.id.counttxt);

with

TextView tx3 = (TextView)view1.findViewById(R.id.counttxt);

and

likeButton = (LikeButton) view1.findViewById(R.id.cvcv);

with

LikeButton likeButton = (LikeButton) view1.findViewById(R.id.cvcv);

In your code you are using the same instance of tx3 and likebutton , and it saves the last value, hope this helps 在你的代码都使用相同的instancetx3likebutton ,并将它保存的最后一个值,希望这有助于

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);



    }
}

Change your OnCreateviewHolder to :- 将您的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 to :- 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM