there are two fragments tabs.ill explain it in brief,in the first fragment tab I'm setting my image (grid view)as favourite and displaying that favourite image in second fragment tab using the room database...the problem is the favourite image is getting added after restarting the app.can anyone what should I do.i have tried on resume but it is not working when I switch the tab. everytime if I want to see the recent added image as favourites I have to restart the app...can anyone help?
firstfragment:
public class FirstFragment extends Fragment {
private GridViewAdapter adapter;
private GridView mGridView;
//ProgressBar myProgressBar;
ProgressDialog progressDialog;
ViewPager viewPager;
private static final String HI = "http://mapi.trycatchtech.com/v1/stylish_hair_cut_for_pubg/stylish_hair_cut_for_pubg_list";
public List<RetroPhoto> product_lists=new ArrayList<>();
private JsonArrayRequest request;
private RequestQueue requestQueue;
public static FavoriteDatabase favoriteDatabase;
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();
// myProgressBar= getView().findViewById(R.id.myProgressBar);
progressDialog = new ProgressDialog(getContext());
progressDialog.setMessage("Loading....");
progressDialog.show();
/*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();
populateGridView(response.body());
getData();
}
@Override
public void onFailure(Call<List<RetroPhoto>> call, Throwable throwable) {
// myProgressBar.setVisibility(View.GONE);
progressDialog.dismiss();
Log.d("url", "error");
}
});}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);
}}
second fragment:
public class SecondFragment extends Fragment {
private RecyclerView rv;
private FavoriteAdapter adapter;
public static FavoriteDatabase favoriteDatabase;
ProgressDialog progressDialog;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_favourites,container, false);
return rootView;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
rv=(RecyclerView)getView().findViewById(R.id.rec);
rv.setHasFixedSize(true);
rv.setLayoutManager(new LinearLayoutManager(getContext()));
}
public void getFavData() {
List<FavoriteList> favoriteLists=FirstFragment.favoriteDatabase.favoriteDao().getFavoriteData();
adapter=new FavoriteAdapter(favoriteLists,getContext());
rv.setAdapter(adapter);
}
@Override
public void onResume() {
this.getFavData();
super.onResume();
}}