0
当我点击类似按钮时,如果尝试更新计数,它会在第一次更新,但下次尝试增加计数时它会显示计数的原始值,之后,如果我尝试显示增加值,它会间歇性地工作。NotifyIteam在recyclerview中更改为无法正常工作
public CategoryListAdapter(Context context, Activity act, ArrayList<CategoryRequest> mData) {
this.ctx = context;
this.data = mData;
this.activity = act;
// this.arraylist = new ArrayList<CategoryRequest>();
// this.arraylist.addAll(mData);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
itemView = LayoutInflater.
from(parent.getContext()).
inflate(R.layout.row_category, parent, false);
return new Viewholder(itemView);
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
categoryRequest = getItem(position);
((Viewholder) holder).usrname.setText(categoryRequest.getUsr_name());
((Viewholder) holder).postname.setText(categoryRequest.getPost_title());
((Viewholder) holder).location.setText(categoryRequest.getPost_location());
((Viewholder) holder).post_description.setText(categoryRequest.getPost_desc());
((Viewholder) holder).like.setText("Good" + "(" + categoryRequest.getPost_good() + ")");
((Viewholder) holder).dislike.setText("Bad" + "(" + categoryRequest.getPost_bad() + ")");
((Viewholder) holder).comments.setText("Comments" + "(" + categoryRequest.getPost_comment() + ")");
/**
* click on good button
*/
((Viewholder) holder).like.setTag(position);
((Viewholder) holder).like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView text = (TextView) v;
if (text.getTag() == v.getTag()) {
position_likedislike = Integer.parseInt("" + text.getTag());
LikeDislikeRequest likeDislikeRequest = new LikeDislikeRequest();
likeDislikeRequest.setLike_lgn_id("1");
likeDislikeRequest.setLike_post_id(data.get(Integer.parseInt("" + text.getTag())).getPost_id());
likeDislikeRequest.setLike_type("1");
HTTPWebRequest.LikeDislikePost(activity, likeDislikeRequest, AppConstants.APICode.likepost, CategoryListAdapter.this);
}
}
});
/**
* click on bad button
*/
((Viewholder) holder).dislike.setTag(position);
((Viewholder) holder).dislike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView text = (TextView) v;
if (text.getTag() == v.getTag()) {
position_likedislike = Integer.parseInt("" + text.getTag());
LikeDislikeRequest likeDislikeRequest = new LikeDislikeRequest();
likeDislikeRequest.setLike_lgn_id("1");
likeDislikeRequest.setLike_post_id(data.get(Integer.parseInt("" + text.getTag())).getPost_id());
likeDislikeRequest.setLike_type("2");
HTTPWebRequest.LikeDislikePost(activity, likeDislikeRequest, AppConstants.APICode.dislikepost, CategoryListAdapter.this);
}
}
});
}
@Override
public int getItemCount() {
return data.size();
}
public CategoryRequest getItem(int pos) {
return data.get(pos);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
public void add(List<CategoryRequest> items) {
Log.e("data for update", items.get(0).getPost_good());
Log.e("data for update2", items.get(1).getPost_good());
int previousDataSize = this.data.size();
this.data.addAll(items);
notifyItemRangeInserted(previousDataSize, items.size());
}
@Override
public void apiResponsePostProcessing(String response, int apiCode) {
Log.d("Login Responce", "response=====" + response);
if (response != null) {
Gson gson = new Gson();
try {
switch (apiCode) {
case AppConstants.APICode.likepost:
LikeDisLikeResponse likeDisLikeResponse = new LikeDisLikeResponse();
likeDisLikeResponse = gson.fromJson(response, LikeDisLikeResponse.class);
if (likeDisLikeResponse.getSTATUS().equals("SUCCESS")) {
gson = new GsonBuilder()
.registerTypeAdapter(LikeDislikeRequest.class, new LikeDisLikeResponse())
.create();
LikeDislikeRequest likeDislikeRequest = gson.fromJson(response, LikeDislikeRequest.class);
Log.e("Like count", likeDislikeRequest.getTotalcount());
changeLikeCount(position_likedislike, likeDislikeRequest.getTotalcount());
} else {
Toast.makeText(activity, likeDisLikeResponse.getMESSAGES().toString(), Toast.LENGTH_LONG).show();
}
break;
case AppConstants.APICode.dislikepost:
LikeDisLikeResponse likeDisLikeResponse1 = new LikeDisLikeResponse();
likeDisLikeResponse1 = gson.fromJson(response, LikeDisLikeResponse.class);
if (likeDisLikeResponse1.getSTATUS().equals("SUCCESS")) {
gson = new GsonBuilder()
.registerTypeAdapter(LikeDislikeRequest.class, new LikeDisLikeResponse())
.create();
LikeDislikeRequest likeDislikeRequest = gson.fromJson(response, LikeDislikeRequest.class);
changeDisLikeCount(position_likedislike, likeDislikeRequest.getTotalcount());
} else {
Toast.makeText(activity, likeDisLikeResponse1.getMESSAGES().toString(), Toast.LENGTH_LONG).show();
}
break;
}
} catch (Exception e) {
Log.e("OrderListActivity ", "Error in response" + e);
}
}
}
private void changeLikeCount(int i, String count) {
data.get(i).setPost_good(count);
notifyItemChanged(i);
}
private void changeDisLikeCount(int i, String count) {
data.get(i).setPost_bad(count);
notifyItemChanged(i);
}
添加notifyDataSetChanged(); notifyItemChanged()完成后。 –
你为什么不在你自定义的'ViewHolder'里面调用'setOnClickListener'?只是让它实现'OnClickListener'接口,然后调用'setOnClickListener(this)'并删除那个丑陋的'setTag' /'getTag'东西 – pskink