我正在尝试更新/刷新来自不同活动的回收者视图数据。
我的设置是,我有一个片段运行的回收站视图。单击回收者视图项将打开一个新活动,用户可以在其中进行更新,并将数据保存在数据库中。然后返回(onBackClicked)到片段,回收者视图不会更新。但是,数据已保存,因此如果我关闭应用程序并重新启动更新,则会显示该信息。
有人可以指导我如何继续解决这个问题。
注意:我正在使用观察者来观察回收者视图的项目,但是由于更新是在不同的活动中进行的,因此回收者视图不会更新。如果我在不打开新活动的情况下从同一片段进行更新,则观察者会工作。
提前谢谢
答案 0 :(得分:2)
片段仍然具有onResume方法。您可以在此处更新数据集列表。 不要忘记更新REcyclerView。
{{1}}
答案 1 :(得分:0)
由于片段没有OnRestart LifeCycle,您可以像这样使用
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//refresh recycleradapter with notifydatasetchanged here
//recyclerAdapter.notifyDataSetChanged();
}
}
答案 2 :(得分:0)
您可以将LiveData用于Recyclerview。数据源更改时,它将自动更新recyclerview。
答案 3 :(得分:0)
我将Recycler View放入片段活动中,其中包含许多Card View项目 但是,当我单击“刷新”按钮时,这些项目是第一次创建的
当下次加载Fragment时,不会再次获取这些项目,而这仅是第一次进行。
public class PostFragment extends Fragment {
private List<PostData> PostDataList = new ArrayList<>();
PostDataAdapter adapter=new PostDataAdapter(PostDataList);
RecyclerView recyclerView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.posts_menu,container,false);
recyclerView =view.findViewById(R.id.PostRecycleView);
filldate();
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
return view;
}
public void filldate() {
//Start Get And Set Json Into Card View
final String KeyUrl="http://www.rasamdev.ir/salehin/GetPost.php";
final String KeyUsername="Key";
StringRequest stringRequest = new StringRequest(Request.Method.POST, KeyUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getContext(),response, Toast.LENGTH_SHORT).show();
//Start Pars
if (response != null) {
try {
JSONObject jObject = new JSONObject(response);
JSONArray array = jObject.getJSONArray("Posts");
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
String puid = object.getString("puid");
String Ptitr = object.getString("Ptitr");
String ptext = object.getString("ptext");
String pdate = object.getString("pdate");
String plike = object.getString("plike");
String pview = object.getString("pview");
String pimg = object.getString("pimg");
PostDataList.add(new PostData(pdate,ptext,puid,Ptitr,pimg,pview,plike));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
//End Pars
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(), error + "", Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams() {
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put(KeyUsername,"13581358r@R");
return hashMap;
}
};
RequestQueue requestQueue= Volley.newRequestQueue(this.getActivity());
requestQueue.add(stringRequest);
//End
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onResume() {
adapter.notifyDataSetChanged();
super.onResume();
}