[英]How to update only clicked item at Recyclerview adapter not the last visible one?
[英]update one item in recyclerview adapter
这是我的 ReplyAdapter.java :
public class ReplyAdapter extends RecyclerView.Adapter<ReplyAdapter.MyViewHolder> {
private Context context;
private List<Reply> replies;
private ProgressDialog pDialog;
public ReplyAdapter(Context context, List<Reply> replies) {
this.context = context;
this.replies = replies;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.replies_list, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, @SuppressLint("RecyclerView") final int position) {
holder.reply_id.setText(String.valueOf(replies.get(position).getId()));
holder.replyuserid.setText(String.valueOf(replies.get(position).getUserid()));
holder.alike.setText(replies.get(position).getAlike());
holder.adislike.setText(replies.get(position).getAdislike());
holder.btn_like_reply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pDialog = new ProgressDialog(context, R.style.CustomProgress);
pDialog.setCancelable(false);
pDialog.show();
int postid = replies.get(position).getId();
int vote = 1;
SendVoteRequest(postid, vote);
}
});
private void SendVoteRequest(int postid, final int vote) {
PrefConfig prefConfig = new PrefConfig(context);
int userid = Integer.parseInt(prefConfig.Readuserid());
String token = prefConfig.Readtoken();
APIInterface apiInterface = APIClient.getClient().create(APIInterface.class);
Call<Vote> call = apiInterface.SendNewVote(userid, postid, token, vote);
call.enqueue(new Callback<Vote>() {
@Override
public void onResponse(Call<Vote> call, Response<Vote> response) {
hidePDialog();
if (response.isSuccessful()) {
Vote vote = response.body();
Toast.makeText(context, vote.getMessage(), Toast.LENGTH_LONG).show();
String flag = vote.getFlag();
if (flag.equals("1")) {
// Intent intent = ((Activity) context).getIntent();
// context.startActivity(intent);
// ((Activity) context).finish();
//Here alike value must be updated.
}
}
当用户点击喜欢按钮时,“SendVoteRequest”调用并发送到服务器。 如果响应成功返回标志=1; 刷新此代码页并更新值:
Intent intent = ((Activity) context).getIntent();
context.startActivity(intent);
((Activity) context).finish();
但我不想刷新页面。我重新加载“holder.alike”值。
notifyItemChanged 不起作用。
if (flag.equals("1")) {
ReplyAdapter.this.notifyItemChanged(1);
}
您需要通知您的适配器某个位置的项目发生了变化。 请看看需要一个关于 RecyclerView.Adapter.notifyItemChanged(int position, Object payload) 的例子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.