【发布时间】:2019-11-25 08:23:31
【问题描述】:
有两个片段选项卡。我会简要解释一下,在第一个片段选项卡中,我将我的图像(网格视图)设置为收藏,并使用房间数据库在第二个片段选项卡中显示该最喜欢的图像......问题是在重新启动应用程序后添加了最喜欢的图像吗?谁能告诉我我该怎么办?我已经尝试过恢复,但是当我切换选项卡时它不起作用。每次如果我想将最近添加的图像作为收藏夹,我必须重新启动应用程序...谁能帮忙?
第一个片段:
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);
}}
第二个片段:
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();
}}
【问题讨论】:
标签: android json android-fragments android-room android-fragmentactivity