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