[英]Android: Best way to retain listview content in fragment in tabbed app?
首先,這是我關於StackOverflow的第一個問題,因此請原諒任何格式問題。
我正在編寫一個Android平板電腦應用程序,該應用程序允許用戶使用從Web服務提取的內容填充ListView。 在此刻,有一個活動包含一個ViewPager,該ViewPager在不同頁面上包含6個片段。
問題是,當用戶再次切換到另一個選項卡/上一步,並且調用了Fragment的OnCreateView方法(將ListView初始化為空)時,下載並添加到ListView的數據消失了。
除了將列表視圖的內容存儲在數據庫/ sharedprefs中之外,什么是保留列表視圖的內容的最佳方法是什么。 當用戶注銷/重新啟動應用程序時,列表視圖中的數據需要銷毀,因此我希望不要以任何方式保留它。
ListView容器片段的OnCreateView:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_certificate_list, container, false);
return rootView;
}
這是當用戶點擊下載按鈕時填充ListView的代碼:
ListView lv = (ListView) callerActivity.findViewById(R.id.listView1);
lv.setAdapter(new CertListAdapter(callerActivity.getBaseContext(), activeCerts));
if (activeCerts.size() > 0) {
((TextView) callerActivity.findViewById(R.id.certStatusLabel)).setVisibility(View.GONE);
} else {
((TextView) callerActivity.findViewById(R.id.certStatusLabel)).setText(callerActivity.getString(R.string.certsDontExist));
}
activeCerts變量是從Web服務獲得的證書對象的數組列表。
編輯
找到了解決方案,只需檢查onCreateView方法中“ activeCerts”變量是否為null,如果不為null則再次填充ListView。 當用戶注銷時,我只是將activeCerts設置為null。
干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.