Ben bir çözüm ile piyasada bir uygulama var Ben çözemiyorum görünebilir bir hata ile. Bugün bunu aşağıdaki yönteme kadar takip ettim.ListView boş uygulama devam ederken bağdaştırıcıya eklenen rağmen rağmen
public void updateDealList(ArrayList<Deal> deals) {
// first call or showing bookmakrs (also gets called other times when adapter is null)
if (dealListAdapter == null || showingBookmarks || !dealListAdapter.moreDealsToDownload()) {
dealListAdapter = new EndlessDealListAdapter(getActivity(),
R.layout.deal_list_item, deals);
setListAdapter(dealListAdapter);
listView = getListView();
if (getActivity().findViewById(R.id.right_fragment_container)!=null){ // if tablet
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setVerticalScrollbarPosition(View.SCROLLBAR_POSITION_LEFT);
}
showingBookmarks=false;
Log.d("UPDATE_DEAL_LIST", "Notified list created new" + dealListAdapter.getCount());
return; //PROBLEM OCCURS WHEN APP COMES IN HERE AFTER RESUMING
}
dealListAdapter.getDealListAdapter().clear();
for (Deal d: deals){
dealListAdapter.getDealListAdapter().add(d);
Log.d("UPDATE_DEAL_LIST", "added " + d.title);
}
dealListAdapter.notifyDataSetChanged();
Log.d("UPDATE_DEAL_LIST", "Notified list " + dealListAdapter.getCount());
}
Bu yöntem, Internet'ten indirilen anlaşma nesnelerinin bir arraylistinden geçirilir. Uygulama ilk açıldığında internetten veri çekilir ve ListFragment için ayarlanmış yeni bir adaptör oluşturan yukarıdaki yöntem çağrılır. Bu yöntem, kullanıcı daha fazla fırsat istediğinde de çağrılır.
Sahip olduğum sorun, listenin bazen boş olan bağlantıyı içeren bir anlaşma olduğunu düşünüyor. Bu, bir aygıt belleğinde düşük olduğunda uygulamayı kullanmaya devam ettiğinde ortaya çıkar (uygulamanın bir kısmının ram'dan kaldırıldığını varsayıyorum). Bu yöntem denir ve dealListAdapter boştur, böylece yeni bir tane oluşturulur ve fırsatlar eklenir. Buna rağmen, liste boş kalır ve kullanıcı tekrar çalışmaya başlamak için uygulamayı kapatmak zorunda kalmalıdır.
Aşağıdaki çizgi, yöntemin çağrılması durumunda, takıma if ve 21 anlaşmaların eklendiğinde tat gösterir. Ne yazık ki liste kullanıcıya boş.
05-23 01:52:32.879: D/UPDATE_DEAL_LIST(3478): Notified list created new21
Başka bir kodun yararlı olup olmayacağını bana bildirin. – bencallis
Bağdaştırıcıyı oluşturduktan sonra temizler ve tüm girişleri fırsatlar dizisinden ekleyin. Bu diziyi nasıl saklıyorsunuz? Sınıfın bir üye değişkeni ise, etkinliğiniz sistem tarafından öldürülürse korunmaz. Duraklatıldığında veya durdurulduğunda etkinlik durumunu kaydediyor musunuz? http://developer.android.com/guide/topics/fundamentals/activities.html#SavingActivityState –
Yöntemdeki gövdede, sonuçta geri döndüğünde, adaptör anında temizlenmez. Bağdaştırıcı, ListFragment sınıfında örnek değişken olarak saklanır. ArrayList'in kendisi sık sık değiştiği için depolanmaz. Şu anda bir durum kaydedilmedi. Görünüşe göre uygulama tekrar başlatıldığında sorun ortaya çıktığında ortaya çıkıyor. Bir uygulamayı sıfırdan başlattıktan sonra sistem tarafından öldürüldükten sonra bir uygulamayı yeniden başlatırken Android ne yapar? – bencallis