如何在处理程序中调用api时停止recyclelerview的闪烁

时间:2018-06-14 05:16:14

标签: php android sql api android-recyclerview

我是Android的新手,我试图在几秒钟后调用api获取更新的数据并使用Volley将数据设置为包含imageview的recyclerview,但在处理程序中添加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);
        }
    }
}

这是我用来在一段时间后调用方法的代码。

0 个答案:

没有答案