刷新ViewPagerIndicator点数增加

问题描述 投票:1回答:1

问题是,每次我尝试刷新主要活动时,ViewPagerIndicator点也在增加。以下是活动的屏幕截图:1)main screen ss 2)刷新时:first refresh screen 3)再次刷新[ C0] ..我不应该在哪里进行更改..所以引导我...提前谢谢..以下是代码:

second time refresh screen

PhotoViewPagerAdapter:

 public class FirstFragment extends Fragment {
     private GridViewAdapter adapter;
     private MyGridView mGridView;
     //ProgressBar myProgressBar;
     ProgressDialog progressDialog;
     private PhotoViewPagerAdapter photoViewPagerAdapter;

     public List < RetroPhoto > product_lists = new ArrayList < > ();

     private JsonArrayRequest request;
     private RequestQueue requestQueue;
     public static FavoriteDatabase favoriteDatabase;
     ViewPager viewPager;
     LinearLayout sliderDotspanel;
     private int dotscount;
     private ImageView[] dots;
     private List < RetroPhoto > retroPhotoList;
     SwipeRefreshLayout swipeRefreshLayout;
     private void populateGridView(List < RetroPhoto > spacecraftList) {
         //mGridView = findViewById(R.id.mGridView);
         mGridView = getView().findViewById(R.id.mGridView);
         adapter = new GridViewAdapter(getContext(), spacecraftList);
         mGridView.setAdapter(adapter);
     }

     @Nullable
     @Override
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         View rootView = inflater.inflate(R.layout.fragment_first, container, false);
         return rootView;
     }

     @Override
     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
         favoriteDatabase = Room.databaseBuilder(getContext(), FavoriteDatabase.class, "myfavdb").allowMainThreadQueries().build();
         viewPager = (ViewPager) getView().findViewById(R.id.viewPager);
         sliderDotspanel = (LinearLayout) getView().findViewById(R.id.SliderDots);
         swipeRefreshLayout = getView().findViewById(R.id.swipe);
         //  myProgressBar= getView().findViewById(R.id.myProgressBar);
         /*progressDialog = new ProgressDialog(getContext());
         progressDialog.setMessage("Loading....");
         progressDialog.show();*/
         swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
             public void onRefresh() {
                 // Your code to make your refresh action
                 // CallYourRefreshingMethod();
                 progressDialog.dismiss();

                 fetchdata();
                 final Handler handler = new Handler();
                 handler.postDelayed(new Runnable() {
                     @Override
                     public void run() {
                         if (swipeRefreshLayout.isRefreshing()) {
                             swipeRefreshLayout.setRefreshing(false);
                         }
                     }
                 }, 1000);
             }
         });
         if (isNetworkConnected()) {
             progressDialog = new ProgressDialog(getContext());
             progressDialog.setMessage("Please wait...");
             progressDialog.setCancelable(false);
             progressDialog.show();

             // startDownload();
         } else {
             new AlertDialog.Builder(getContext())
                 .setTitle("No Internet Connection")
                 .setMessage("It looks like your internet connection is off. Please turn it " +
                     "on and try again")
                 .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int which) {
                         getActivity().finish();
                         startActivity(getActivity().getIntent());
                     }
                 }).setIcon(android.R.drawable.ic_dialog_alert).show();
         }
         fetchdata();

     }
     private void getData() {

         request = new JsonArrayRequest(HI, new com.android.volley.Response.Listener < JSONArray > () {
             @Override
             public void onResponse(JSONArray response) {
                 JSONObject ob;

                 for (int i = 0; i < response.length(); i++) {
                     try {

                         ob = response.getJSONObject(i);
                         RetroPhoto pr = new RetroPhoto(ob.getInt("id"),
                             ob.getString("image"),
                             ob.getString("thumb_image"));

                         product_lists.add(pr);
                     } catch (JSONException e) {
                         e.printStackTrace();
                     }
                 }
                 setupData(product_lists);
             }
         }, new com.android.volley.Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError error) {
                 Toast.makeText(getContext(), "errrrrrrrrrr", Toast.LENGTH_LONG).show();

             }
         });
         requestQueue = Volley.newRequestQueue(getContext());
         requestQueue.add(request);
     }
     private void setupData(List < RetroPhoto > product_lists) {
         adapter = new GridViewAdapter(getContext(), product_lists);
         mGridView.setAdapter(adapter);
     }
     private boolean isNetworkConnected() {
         ConnectivityManager connMgr = (ConnectivityManager) getContext().getSystemService(Context.CONNECTIVITY_SERVICE); // 1
         NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); // 2
         return networkInfo != null && networkInfo.isConnected(); // 3
     }
     private void fetchdata() {
         /*Create handle for the RetrofitInstance interface*/
         GetDataService myAPIService = RetrofitClientInstance.getRetrofitInstance().create(GetDataService.class);

         Call < List < RetroPhoto >> call = myAPIService.getAllPhotos();
         call.enqueue(new Callback < List < RetroPhoto >> () {

             @Override
             public void onResponse(Call < List < RetroPhoto >> call, Response < List < RetroPhoto >> response) {
                 //        myProgressBar.setVisibility(View.GONE);
                 progressDialog.dismiss();
                 retroPhotoList = response.body();
                 populateGridView(retroPhotoList);
                 getData();
                 PhotoViewPagerAdapter viewPagerAdapter = new PhotoViewPagerAdapter(getContext(), retroPhotoList);

                 viewPager.setAdapter(viewPagerAdapter);
                 dotscount = viewPagerAdapter.getCount();
                 dots = new ImageView[dotscount];

                 for (int i = 0; i < dotscount; i++) {

                     dots[i] = new ImageView(getContext());
                     dots[i].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.page_indicator_unselected));


                     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

                     params.setMargins(8, 0, 8, 0);

                     sliderDotspanel.addView(dots[i], params);

                 }

                 dots[0].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.page_indicator_selected));

                 viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                     @Override
                     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                     }

                     @Override
                     public void onPageSelected(int position) {

                         for (int i = 0; i < dotscount; i++) {
                             dots[i].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.page_indicator_unselected));
                         }

                         dots[position].setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.page_indicator_selected));

                     }

                     @Override
                     public void onPageScrollStateChanged(int state) {

                     }
                 });
             }

             @Override
             public void onFailure(Call < List < RetroPhoto >> call, Throwable throwable) {
                 Log.d("url", "error");
             }
         });
     }
 }

布局:

public class PhotoViewPagerAdapter extends PagerAdapter {
    private Context context;
    private LayoutInflater layoutInflater;
    //private Integer [] images={R.drawable.one,R.drawable.four,R.drawable.three,R.drawable.four};
    private List < RetroPhoto > list_data;

    public PhotoViewPagerAdapter(Context context, List < RetroPhoto > list_data) {
        this.context = context;
        this.list_data = list_data;
    }


    @Override
    public boolean isViewFromObject(@NonNull final View view, @NonNull Object o) {
        return view == o;

    }

    @Override
    public int getCount() {
        return 3;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, final int position) {
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.model2, null);
        ImageView img = view.findViewById(R.id.spacecraftImageView2);
        Picasso.with(context).load(list_data.get(position).getImage()).into(img);

        ViewPager viewPager = (ViewPager) container;
        viewPager.addView(view);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(context, ViewImage.class);
                i.putExtra("Title", list_data.get(position).getImage());

                context.startActivity(i);
            }
        });
        //return true;
        return view;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        ViewPager viewPager = (ViewPager) container;
        View view = (View) object;
        viewPager.removeView(view);

    }
}
android retrofit retrofit2 swiperefreshlayout viewpagerindicator
1个回答
0
投票

dotcount变量是全局变量,每次刷新时它会增加3。因此,请使其成为局部变量

© www.soinside.com 2019 - 2024. All rights reserved.