【发布时间】:2021-11-16 00:03:44
【问题描述】:
这是我的片段的代码,当我创建一个recyclerview时,如果我点击可以看到一个列表,我可以在antoher页面中看到详细信息,但是当我回来时我看不到列表。
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
SharedPreferences pref = getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
adapter = new PlatformAdapter(data);
recyclerView = view.findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
//recyclerView.setAdapter(adapter);
if (pref.getBoolean("firstTime", true)) {
RequestVolley.getInstance(getContext())
.doGetRequest("http://www....json", new RequestVolley.OnCompleteCallback() {
@Override
public void onCompleted(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.optJSONObject(i);
if (object != null) {
data.add(Platform.parseJSON(object));
}
}
adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
new Thread(new Runnable() {
@Override
public void run() {
DB.getInstance(getContext()).getPlatformDao().insert(data);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});
SharedPreferences.Editor editor = pref.edit();
editor.putBoolean("firstTime", false);
editor.apply();
final PlatformAdapter adapter = new PlatformAdapter(data);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
recyclerView.setAdapter(adapter);
}
});
}
}).start();
}
if(pref.getBoolean("firstTime",false)){
new Thread(new Runnable() {
@Override
public void run() {
data.addAll(DB.getInstance(getContext()).getPlatformDao().findAll());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});
final PlatformAdapter adapter = new PlatformAdapter(data);
recyclerView.post(new Runnable() {
@Override
public void run() {
recyclerView.setAdapter(adapter);
}
});
}
}).start();
}
} }
这是我的应用程序在插入或从roomDatabase重新加载时的代码,我第一次操作页面没问题,但第二次我只能看到一个白色页面。为什么?我没有任何错误。 为什么它不在数据库上,或者它没有重新加载?
这是我的道
@道
公共接口 PlatformDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
public void insertOne(Platform platform);
@Insert(onConflict=OnConflictStrategy.REPLACE)
public void insert(List<Platform> platforms);
@Insert(onConflict=OnConflictStrategy.REPLACE)
public void insertVarArgs(Platform...platforms);
@Update
public void update(Platform platform);
@Delete
public void delete(Platform platform);
@Query("SELECT * FROM platforms")
public List<Platform> findAll();
@Query("SELECT * FROM platforms WHERE cdenominazione__=:cdenominazione__")
public Platform findById(String cdenominazione__);
}
【问题讨论】:
-
什么是“新页面”?这是一个新的活动还是你在添加一个新的片段?
-
总是片段,但问题不在于从/到片段的导航,而在于 DB。
-
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
标签: android database android-fragments dao