Как остановить мерцание ресивлера при вызове API в обработчике

Я новичок в Android, и я пытаюсь вызвать API через несколько секунд, чтобы получить обновленные данные и установить эти данные, используя Volley, для recyclerview, содержащего viewview, но после добавления метода api в обработчик изображения recyclerview продолжают мерцать. быть очень полезным, если кто-то может решить проблему.

                    handler = new Handler();
//   final Runnable r = new Runnable()
r = new Runnable()
{
public void run()
{
if(!handlerStop){
//
boolean flag = hasConnection();
if (flag) {

String
url1=AllUrl.WHOS_CHECKIN+loginUserId+"&club_id="+clubId;
String url12=url1.replace(" ","%20");


handler.postDelayed(this, 2000);
whosGoingDetails(url12);


} else {
handler.postDelayed(this, 1000);

}



}

}
};
handler.postDelayed(r, 1000);

// метод whosGoingDetails:

public void whosGoingDetails(String url){

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET,
url, null, new Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {
Log.d("whoscheckin_response", response.toString());

try {
// Parsing json object response
// response will be a json object
JSONObject object = new JSONObject(response.toString());
String res = object.getString("response");
if(res.equals("200")){
JSONArray array = object.getJSONArray("message");
if(array.length()==0){
goingRel.setVisibility(View.GONE);
}
else{
usergoingList = new ArrayList<>();
goingRel.setVisibility(View.VISIBLE);
for (int r = 0; r < array.length(); r++) {
JSONObject object6 = array.getJSONObject(r);
UserGoingModel model = new UserGoingModel();

String user_id = object6.getString("user_id");
String user_age = object6.getString("user_age");
String user_gender = object6.getString("user_gender");
String user_photo = object6.getString("user_photo");
model.userId = object6.getString("user_id");
model.userAge = object6.getString("user_age");
model.userGender = object6.getString("user_gender");
model.userPhoto = object6.getString("user_photo");

usergoingList.add(model);

}
goingAdapter = new UserGoingAdapter(usergoingList, ClubEventDetails.this);
goingRecycler.setAdapter(goingAdapter);



}
}else{
// Toast.makeText(ClubEventDetails.this,object.getString("message"),Toast.LENGTH_LONG).show();
}



} catch (JSONException e) {
e.printStackTrace();

}

}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("main", "Error: " + error.getMessage());


}
});

// Adding request to request queue
jsonObjReq.setShouldCache(false);
MyApplication.getInstance().addToRequestQueue(jsonObjReq);
}

адаптер:

    public class UserGoingAdapter extends RecyclerView.Adapter<UserGoingAdapter.MyView> {
private List<UserGoingModel> arrayList;
private Context context;
UserGoingModel current;
private boolean isChecked;
public String favClubUrl;
SharedPreferences sharedpreferences;
public static final String PREFS_NAME = "LoginPrefs";
public static String loginUserId,loginUserMode,loginUserType;

public UserGoingAdapter(List<UserGoingModel> arrayList, Context context) {
this.arrayList = arrayList;
this.context = context;
}

@Override
public UserGoingAdapter.MyView onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.usergoing_row, parent, false);
MyView viewHolder = new MyView(v);
return viewHolder;
}

@Override
public void onBindViewHolder(UserGoingAdapter.MyView holder, int position) {
sharedpreferences=context.getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE);
loginUserId=sharedpreferences.getString("user_id","");
loginUserType=sharedpreferences.getString("user_type","");
loginUserMode=sharedpreferences.getString("mode","");

current=arrayList.get(position);
String user_id=current.userId;
String user_age=current.userAge;
String user_gender=current.userGender;
String user_img=current.userPhoto;

if(user_img.equals("")){
Picasso.with(context.getApplicationContext())
.load(R.drawable.profile)
.into(holder.profile_img);
// holder.profile_img.setImageDrawable(context.getResources().getDrawable(R.drawable.profile));

}
else{
Picasso.with(context.getApplicationContext())
.load(current.userPhoto)
.into(holder.profile_img);
}
}

@Override
public int getItemCount() {
return (null != arrayList ? arrayList.size() : 0);
}

public class MyView extends RecyclerView.ViewHolder {
//public ImageView profile_img;
//public CircularImageView profile_img;
public CircleImageView profile_img;
public MyView(View itemView) {
super(itemView);

profile_img=(CircleImageView)itemView.findViewById(R.id.user_profile);
}
}
}

Это код, который я использую для вызова метода через некоторое время.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …