我的应用程序有一个类似的部分。每个部分解析来自不同URL的json数据并在自定义列表视图中显示它。现在,当我将第2部分导航到第3部分时。每个片段显示数据,但是当导航2到3到4然后再回到2.第2部分再次从网络解析数据。
现在,有没有保存数据(不在数据库中)。所以,如果我导航2到3到4然后回到2,它将不会再次解析数据。
答案 0 :(得分:0)
Simply fallow undermentioned and let me know if you have any issues regarding same. I faced this problem:-
(1) Define a boolean value with value "false".
(2) Now when you are done with fetching data then simply change it to true.
(3) Now when you render back to any screen that have downloaded data simply check that value to be true/false. you will check same on OnCreateView. If value is false then let AsyncTask be run else wise don't allow AsyncTask to run.
For ex:
<
if(vivek != true){
new GoAsyncTask().execute();
}else{
gaa = new GoArrayAdapter(getActivity(), m_ArrayList);
lv = (ListView) rootView.findViewById(R.id.go_list);
lv.setVisibility(View.VISIBLE);
lv.setAdapter(gaa);
lv.setOnItemClickListener(new OnItemClickListener() {
@SuppressWarnings("static-access")
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
dh.open();
dh.updateSeenStatus(m_ArrayList.get(arg2).postid, 1);
dh.close();
m_ArrayList.get(arg2).isSeen = true;
GoDetail fragment = new GoDetail();
Bundle bundle = new Bundle();
bundle.putString("title", m_ArrayList.get(arg2).title);
bundle.putString("excert", m_ArrayList.get(arg2).excert);
bundle.putString("description", m_ArrayList.get(arg2).description);
bundle.putString("thumsrc", m_ArrayList.get(arg2).thumsrc);
bundle.putString("header_title", "Go");
//bundle.putInt("postid", m_ArrayList.get(arg2).postid);
fragment.setArguments(bundle);
((BaseContainerFragment)getParentFragment()).replaceFragment(fragment, true);
}
});
}
>
答案 1 :(得分:0)
对于这些类型的布局和行为,以下组合对我来说肯定是赢家:
Tabs + ViewPager + Fragments + Loader(specifically AsyncTaskLoader)
Tabs + ViewPager
以您需要的方式呈现布局。您可能知道developer article,它显示了如何构建此类布局。
ViewPager + Fragments
,这里是显示如何设置的another dev article。
与AsyncTask相比,Loader最大的优点是它知道在重新创建活动或片段时保留数据,因此您不需要再次询问它。数据加载与UI生命周期分离。描述装载机的developer article是让您入门的最佳位置。您可以使用AsyncTaskLoader
,因为它在某些时候与AsyncTask
类似(实际上AsyncTaskLoader
使用AsyncTask
)