fastadapter doesnt save states
fastadapter doesnt save states
I have a like button in a viewHolder and when I show it in fast adapter when users like a post and then scroll to down and then come back to top the like suddenly disappear but the request was sent to server successfully and if refresh the app the like button works correctly but if you unlike again the problems shown up. Does BindView Hold this like button status or I Should use onBindViewHolder()
?
onBindViewHolder()
public class TestAppAdapterHolder extends AbstractItem<TestAppAdapterHolder,ViewHolder> {
private Result result;
public TestAppAdapterHolder(Result result) {
this.result = result;
}
public TestAppAdapterHolder() {
}
public Result getResult() {
return result;
}
@Override
public ViewHolder getViewHolder(View v) {
return new ViewHolder(v);
}
// Fast Adapter methods
@Override
public int getType() {
return R.id.parent_testApp_list_item;
}
@Override
public void bindView(final ViewHolder viewHolder, List<Object> payloads) {
super.bindView(viewHolder, payloads);
final Context context = viewHolder.itemView.getContext();
if (result.getLike()) {
viewHolder.testApp_item_like.setVisibility(View.VISIBLE);
viewHolder.testApp_item_notlike.setVisibility(View.INVISIBLE);
} else {
viewHolder.testApp_item_notlike.setVisibility(View.VISIBLE);
viewHolder.testApp_item_like.setVisibility(View.INVISIBLE);
}
}
@Override
public int getLayoutRes() {
return R.layout.testApp_list_item;
}
// Manually create the ViewHolder class
protected static class ViewHolder extends RecyclerView.ViewHolder {
protected ImageView testApp_item_like;
protected ImageView testApp_item_notlike;
public ViewHolder(View view) {
super(view);
testApp_item_like = view.findViewById(R.id.testApp_item_like);
testApp_item_notlike = view.findViewById(R.id.testApp_item_notlike);
testApp_item_like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
unlike();
String token = Utility.getSharedPref(itemView.getContext(), R.string.shared_preferences_token);
RequestInterface request = Utility.getRequerst();
Call<ResponseJson> call = request.unlike("TOKEN " + token, testAppId + "");
call.enqueue(new Callback<ResponseJson>() {
@Override
public void onResponse(Call<ResponseJson> call, Response<ResponseJson> response) {
if (response.isSuccessful()) {
if (response.body().getSuccess()) {
testApp_item_like.setVisibility(View.INVISIBLE);
testApp_item_notlike.setVisibility(View.VISIBLE);
} else {
testApp_item_like.setVisibility(View.VISIBLE);
testApp_item_notlike.setVisibility(View.INVISIBLE);
}
} else {
testApp_item_like.setVisibility(View.VISIBLE);
testApp_item_notlike.setVisibility(View.INVISIBLE);
}
}
@Override
public void onFailure(Call<ResponseJson> call, Throwable t) {
testApp_item_like.setVisibility(View.VISIBLE);
testApp_item_notlike.setVisibility(View.INVISIBLE);
}
});
}
});
testApp_item_notlike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
like();
String token = Utility.getSharedPref(itemView.getContext(), R.string.shared_preferences_token);
RequestInterface request = Utility.getRequerst();
Call<ResponseJson> call = request.like("TOKEN " + token, testAppId + "");
call.enqueue(new Callback<ResponseJson>() {
@Override
public void onResponse(Call<ResponseJson> call, Response<ResponseJson> response) {
if (response.isSuccessful()) {
if (response.body().getSuccess()) {
testApp_item_like.setVisibility(View.VISIBLE);
testApp_item_notlike.setVisibility(View.INVISIBLE);
} else {
testApp_item_like.setVisibility(View.INVISIBLE);
testApp_item_notlike.setVisibility(View.VISIBLE);
}
} else {
testApp_item_like.setVisibility(View.INVISIBLE);
testApp_item_notlike.setVisibility(View.VISIBLE);
}
}
@Override
public void onFailure(Call<ResponseJson> call, Throwable t) {
testApp_item_like.setVisibility(View.INVISIBLE);
testApp_item_notlike.setVisibility(View.VISIBLE);
}
});
}
});
public void unlike(){
testApp_item_like.setVisibility(View.INVISIBLE);
testApp_item_notlike.setVisibility(View.VISIBLE);
testApp_item_like_count.setText(Functions.entofa(Functions.fatoen(testApp_item_like_count.getText().toString()) - 1 + ""));
YoYo.with(Techniques.Pulse)
.duration(500)
.playOn(this.testApp_item_notlike);
}
}
}
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
Comments
Post a Comment