Bu videoyu izliyorum http://www.youtube.com/watch?v=N6YdwzAvwOA ve Romain Guy, getView()
yöntemini kullanarak daha verimli UI bağdaştırıcısı kodunu nasıl yapacağınızı gösteriyor. Bu, CursorAdapters için de geçerli midir? Şu anda özel imleç adaptörlerim için bindView()
ve newView()
kullanıyorum. Bunun yerine getView kullanmalı mıyım?GetView Vs. Özel bir CursorAdapter içinde BindView?
cevap
CursorAdapter
satır geri dönüşüm modelini şekilde newView()
ve bindView()
, delegeleri zorlar olarak getView()
gerçeklenimine. Bu nedenle, newView()
ve bindView()
'u geçersiz kılarsanız, satır geri dönüşümü için CursorAdapter
ile özel bir şey yapmanıza gerek yoktur.
/**
* @see android.widget.ListAdapter#getView(int, View, ViewGroup)
*/
public View getView(int position, View convertView, ViewGroup parent) {
if (!mDataValid) {
throw new IllegalStateException("this should only be called when the cursor is valid");
}
if (!mCursor.moveToPosition(position)) {
throw new IllegalStateException("couldn't move cursor to position " + position);
}
View v;
if (convertView == null) {
v = newView(mContext, mCursor, parent);
} else {
v = convertView;
}
bindView(v, mContext, mCursor);
return v;
}
Bu CursorAdapter kaynak kodu, açıkça daha işe CursorAdapter.
CursorAdapter
uygulama BaseAdapter
gibi alt classing düzenli adaptörler farklıdır, sen getView()
, getCount()
, getItemId()
bu bilgi imleç kendisinden alınabilir çünkü geçersiz kılmak gerekmez. Bir görünüm göz önüne alındığında sağlanan imleç verileri görüntülemek için güncelleyin:
bindView()
:
CursorAdapter
alt sınıfı oluşturmak için iki yöntem geçersiz kılmak gerekir, bir
Cursor
Verilen.
newView()
: Bu, listeye giden yeni bir görünümü yapılandırmaya çağrılır.
CursorAdapter
, geri dönüşüm görünümleriyle ilgilenir (normal Adapter
'daki getView()
yönteminin aksine). Yeni bir satıra ihtiyaç duyduğu her seferinde newView()
'u aramaz. Zaten bir View
(null
değil) varsa, doğrudan bindView()
'u arar, bu şekilde oluşturulan görünüm yeniden kullanılır. Her bir görünümün oluşturulmasını ve popülasyonunu bu iki yönteme bölmek suretiyle, CursorAdapter
, düzenli bağdaştırıcılarda, her ikisinin de getView()
yöntemiyle gerçekleştirildiği yerlerde yeniden kullanım sağlar.
Teşekkür ederim, çok yardımcı. – LarsH
- 1. CursorAdapter nasıl geçersiz kılınır bindView
- 2. SimpleCursorAdapter vs CursorAdapter?
- 3. Her tablo için bir CursorAdapter kullanmalı mıyım?
- 4. Snackbar eylem GetView() Benim Faaliyet içinde
- 5. ViewHolder düzeni özel CursorAdapter uygulamasında doğru bir şekilde uygulandı mı? İşte
- 6. CursorAdapter öğesinde bir öğeyi silme yönetimi nasıl yönetilir
- 7. Android için düzgün şekilde kodlanmış bir ListView için bu özel CursorAdapter mi?
- 8. SetImageResource(), CursorAdapter ile liste görünümünde yanlış çalışır
- 9. ArrayAdapter'ın getView() yöntemi,
- 10. Özel bağdaştırıcıda Getview çağrılmıyor I hata ayıklandı ve konumun -1
- 11. ViewView öğesinin iç kısmı getView() içinde dönen döndürücü()
- 12. fragmanında getView döndürür bazen null
- 13. CursorAdapter ile bir Liste Görünümü için ArrayAdapter
- 14. NSDictionary özel nesne vs
- 15. Bağdaştırıcı getView() methosd KaynaklarNotFound android'de istisna mı?
- 16. : hesaplama görünüm boyutu MyAdapter iç :: GetView
- 17. WebView vs Chrome Özel Sekmesi
- 18. BaseAdapter notifyDatasetChanged() çağrıldı ama getView() hiçbir zaman
- 19. Etkinlik takibi vs Özel Değişkenler
- 20. Özel MVVM uygulaması Vs. PRISM
- 21. Magento Özel Seçenekler VS Öznitelikleri
- 22. MessengerInstance vs Messenger.Default Mvvmlight içinde
- 23. isDisplayed() vs isVisible() içinde Selenium
- 24. ListView'ın getView() yöntemi ne zaman çağrılır?
- 25. getView() yöntemi nasıl kullanılır ve nereden çağrılır?
- 26. "Görünüm" bölümündeki fragmana bağlanamıyorum. GetView() çalışmıyor :(
- 27. Android Frame Çerçevesi Bir CursorAdapter öğesindeki öğelerdeki animasyon sorunu
- 28. CursorAdapter tarafından desteklenen bir Spinner'dan String değeri, Android
- 29. Özel işlev Fortran içinde
- 30. Nasıl CursorAdapter dan getItemId (int pos) yöntemini geçersiz kılmak?
ViewHolder kalıbını nasıl uygularım? NewView() ve bindView() arasında böler miyim? –
@Scienceprodigy: newView() 'de, satır için' ViewHolder 'öğesini ve setTag() 'ile ilişkilendirirsiniz. BindView() 'da,' ViewHolder'ı 'getTag()' yoluyla alabilirsiniz. – CommonsWare
Teşekkürler, bu işe yarıyor. Yine de, görüntülerin geri dönüşümü ile ilgili bir sorunum var, çünkü varsayılan bölümleri görüntülemek için kullandığım varsayılan olarak GONE olan bir başlık içeren liste öğelerim var. Listeyi yukarı veya aşağı fırlatıncaya kadar her şey iyi görünüyor, sonra üstbilgileri nerede olmamalı diye gösteriliyor. –