the problem is, every time when I'm trying to refresh main activity the ViewPagerIndicator dots are also increasing.here is the screenshots of activity:1) main screen ss 2) on refresh:first refresh screen 3) on again refresh second time refresh screen..I'm not getting where should I make changes..so guide me...thanks in advance..following is the code:
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");
}
});
}
}
PhotoViewPagerAdapter:
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);
}
}
layout:
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".MainActivity"
xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical">
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginBottom="8dp"/>
<com.tbuonomo.viewpagerdotsindicator.WormDotsIndicator
android:id="@+id/SliderDots"
android:layout_below="@+id/viewPager"
android:orientation="horizontal"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="15dp"
app:dotsColor="@color/cardview_dark_background"
app:dotsStrokeColor="@color/cardview_dark_background"
app:dotsCornerRadius="8dp"
app:dotsSize="16dp"
app:dotsSpacing="4dp"
app:dotsStrokeWidth="2dp"
/>
<com.example.pubimg.MyGridView
android:id="@+id/mGridView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:numColumns="2"
android:adjustViewBounds="true"
android:columnWidth="90dp"
android:verticalSpacing="-2dp"
android:horizontalSpacing="-10dp"
android:stretchMode="columnWidth"
android:scrollbars="vertical"
android:fastScrollEnabled="true"
/>
</LinearLayout>
</ScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
here is the ss:enter image description here