Я новичок в 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);
}
}
}
Это код, который я использую для вызова метода через некоторое время.
Задача ещё не решена.
Других решений пока нет …