這是情況。Android:ListFragment加載項目兩次
我目前正在使用操作欄在我的一個選項卡中使用列表片段。有3個標籤; tab1,tab2,tab3 .. listfragment是在tab2上,只是在tab1上的一些片段,所以當我開始我的應用程序defualt是ont tab1 ..當我點擊tab2它從數據庫中加載一些東西,請注意只有一個行目前存儲在數據庫因此,當我點擊tab1登錄後再次點擊tab2突然我的列表已經有兩個相同的值的項目,它只是重複或加載兩次..我在我的數據庫只有1條目。
我該如何防止我的碎片加載列表兩次,我的意思是當我第二次加載這個listfragment時,它將只加載什麼在數據庫上,並刪除listFragment上的以前的值。我在這個問題上的理論是,第一次我點擊tab2它的好,當我點擊tab2之後tab2,以前的項目並沒有刪除,當片段被加載時,它被追加到前一項..
如何防止這種情況的發生..
下面是一個簡單的畫面,不介意UI瑕疵,但試想一下,進入得到了來自加載片段兩次翻番。
這是onActivityCreated
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
loadPatientList(0);
}
片斷這是我loadPatientList()
Cursor c = dbHelper.retrieveAllData(PATIENT_TABLE);
c.moveToFirst();
while(!c.isAfterLast())
{
Patients p = new Patients();
Log.d("patient id",Integer.toString(c.getInt(c.getColumnIndex("_id"))));
p.setId(c.getString(c.getColumnIndex("_id")));
p.setFname(c.getString(c.getColumnIndex("firstname")));
p.setMi(c.getString(c.getColumnIndex("middlename")));
p.setLname(c.getString(c.getColumnIndex("lastname")));
p.setAddr(c.getString(c.getColumnIndex("address")));
p.setHosp_name(c.getString(c.getColumnIndex("hosp_name")));
p.setHosp_room(c.getString(c.getColumnIndex("hosp_room")));
p.setAge(c.getInt(c.getColumnIndex("age")));
p.setMed_history(c.getString(c.getColumnIndex("med_history")));
p.setPat_status(c.getInt(c.getColumnIndex("status")));
patient_list.add(p);
c.moveToNext();
}
dbHelper.close();
Collections.sort(patient_list, new Comparator<Patients>() {
public int compare(Patients o1, Patients o2) {
return o1.getLname().compareToIgnoreCase(o2.getLname());
}
});
PatientAdapter patientListAdapter = new PatientAdapter(getActivity(),R.layout.patient_list_item_fragment, patient_list);
setListAdapter(patientListAdapter);
registerForContextMenu(getListView());
注意通過加載兩次,我的意思是,當我第一次點擊TAB2(啓動應用程序後)< - 它的好,當我點擊回TAB1書房TAB2那我是什麼意思加載兩次..代碼 – lemoncodes
後相關片段做完了,對不起,忘了發貼吧 – Blackbelt
沒錯的 – lemoncodes