2010-01-07 17 views
14

ListActivity sayfamda, listedeki bir önceki sayfa ve sonraki sayfa düğmeleri olarak sırasıyla üstbilgi ve altbilgi görünümlerine (listenin en üstünde ve en altında) ihtiyacım var çünkü Bir seferde sadece 20 öğe görüntüler.android listviews: üstbilgi ve altbilgi görünümleri

Ben yaparak benim başlık ve ayak görünümleri ayarlayın:

getListView().addHeaderView(myHeaderView); 
getListView().addFooterView(myFooterView); 
setListAdapter(adapter); 

Bu iyi çalışır, ama benim listesinin bazı sayfaların sonraki olmayabilir çünkü dinamik, kaldırmak ve bu üstbilgi ve altbilgi görüşlerini eklemem gerekiyor sayfa düğmesi veya önceki sayfa düğmesi.

Sorun şu ki, setListAdapter çağrısından sonra addHeaderView veya addFooterView öğesini arayamıyorum.

Bunun bir yolu var mı?

+0

, ve sonra görünümü yeniden kaldırır. –

+0

Bu bir hata ya da bir gözetim değil, amaçlanan şekilde çalışıyor :) –

+1

biraz detaylandırır mısınız? – Matthias

cevap

10

Sadece üstbilgi ve altbilgiyi sıfır yüksekliğe kadar daraltmayabilir veya düğmelerin (daha da iyisi) gri olmasını neden başarabilirsiniz.

Ve en iyi kullanıcı deneyimi bence, yerleşik Gmail uygulamasında olduğu gibi gerektiğinde (örneğin, kaydırıldığında) daha fazla öğe dinamik olarak yüklemek olacaktır.

+4

Dinamik yükleme yaklaşımı üzerinde anlaşıldı. Buna yardımcı olmak için bazı yeniden kullanılabilir kodlar bile oluşturdum: http://github.com/commonsguy/cwac-endless – CommonsWare

+3

Doğru hatırlıyorsam, 'ListView' ayarlanmış olsa bile üstbilgi veya altbilgi görünümlerini yeniden düzenlemez "GÖRÜNMEK" veya "GÖNEK" olarak görünürlükleri, böylece büyük bir boş alan bıraktı. –

+0

Her halükarda onları gizlemek sarsıcı olurdu; devre dışı bırakma sesleri daha iyi. Ve Mark'ın (commonsware.com) yaklaşımı muhtemelen en iyisidir. –

3

Evet, bu, ListView bileşenindeki bir hata veya denetimdir. Bunun için, sabit liste öğelerini ekleyip kaldıran, kendi WrapperListAdapter'unuzu yazarak çalışabilirsiniz, ancak bunu yapmanın tamamen kolay olmadığını söyleyebilirim.

Alternatif olarak — ve çok daha kolay ve daha kolay olan ListView'un altında veya altında sabit ve sabit bir bileşen ekleyebilirsiniz.

+1

Bir güncelleştirme olarak, Romain Guy'ın da belirttiği gibi, bu amaçlanan davranış. Android'de "ofis saatleri" diye sordum, neden böyle oldu.Hatırladığım kadarıyla, liste bir imleci bağladığında, üstbilgi ve altbilgiler liste öğeleri olarak hesaba katıldığından, bunları eklemek/kaldırmak, ofsetleri dağıtırdı. Bir değişiklik yapmak isterseniz, adaptörü listeye yeniden ekleyebilirsiniz. SDK'da bunu halledebilecek bir ambalaj kağıdı olması güzel olurdu, ama yine de kendi başınıza yaratmak kesinlikle mümkün. –

2

Bu nasıl yol gibi, üstbilgi görünümü eklemek gerekir her zaman adaptörü sıfırlama hakkında:

ListView.FixedViewInfo headerInfo = getListView().new FixedViewInfo(); 
headerInfo.isSelectable=false ; 
headerInfo.view = feedInfoView; 
headerInfos.add(headerInfo); 
headerViewListAdapter = new HeaderViewListAdapter(headerInfos,null,adapter); 
getListView().setAdapter(headerViewListAdapter); 
Normalde ben adaptörü set hemen önce bir altbilgi olarak ayarlamak için bir Görünüm oluşturmak yoluyla bu sorunu kesmek
+0

feedInfoView ne tür bir nesnedir? –

İlgili konular