ListView() öğesini doldurmak için bir liste kullanıyorum. Kullanıcı listeye öğe ekleyebilir. Bununla birlikte, ListView'in en üstünde görüntülenecek öğelere ihtiyacım var. Ters sırada görüntülemek için listemin başına bir öğe nasıl ekleyebilirim?ListView'ün en üstündeki yeni öğeleri gösterme ListView
cevap
Muhtemelen bir ArrayAdapter
kullanmalı ve insert(T, int)
yöntemini kullanmalısınız.
Ör:
ListView lv = new ListView(context);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.id...);
lv.setAdapter(adapter);
...
adapter.insert("Hello", 0);
Sadece listemi kazıttım ve adaptörünü sıkıca kullandım. Harika çalıştı! Teşekkürler. – rphello101
Rica ederim! – aymeric
Varsayılan olarak, alt kısımdaki öğeleri ekler. Bu yüzden eklediğiniz tüm yeni öğeler altta görünecektir. sizin veri kaynağında depolanan olarak ListView verileri görüntüler
Collections.reverse(yourList);
İyi fikir, ancak listeye öğeler eklemeye devam ettim ve bunu geri almayı sürdürdüm, listenin her bir ucuna alternatif olarak bir öğe ekliyorum. Verileri yalnızca temel veri türlerini kaydeden SharedPreferences ile kaydetmem gerektiğinden, iki listeyi takip etmek oldukça zor olurdu. – rphello101
aradığım şeyi buldum. thankx – raj
İyi, ama nesnelerle özel + etiketleri denediğinizde işe yaramıyor! – delive
: Eğer ters sırada bunu istiyorsanız, gibi listesine listadapter/görünümüne
şey ters ayarlamadan önce olabilir.
Veritabanınıza eklediğinizde, öğelerin sonuna eklenmesi gerekir. Dolayısıyla, tüm verileri İmleç nesnesi üzerinden aldığınızda ve ArrayAdapter öğesine atadığınızda, yalnızca bu sıradadır. Temelde veri tabanının başlangıcına veri yazmayı denemelisiniz, bunun yerine sonunda bir zaman damgası alarak.
ArrayList kullanarak, SQLite veya kullanılıyorsa, sen order by
kullanabilirsiniz Collections.reverse(arrayList)
ile yapabilirsiniz.
Hayır Bu yanlış olduğunu düşünüyorum. Liste görünümü için dizi/liste girişi olarak geçmeniz gerekir. Ekleme zaman damgası olmadıkça, veritabanında hiçbir şey yapamazsınız. – kosa
@Nambari: Üzgünüm. Aslında kastedilen, bir Cursor nesnesi kullanarak veri tabanından veriyi almak ve ArrayAdapter'e koymaktı. Bu http://stackoverflow.com/questions/5717732/how-do-i-display-data-from-my-database-in-a-listview gibi bir şey. Cevabımı günceller. Yorumun için teşekkürler. – Swayam
Her zaman nesneleri bir datestamp varsa ve listview o dayalı sıralamak ..
public class CustomComparator implements Comparator<YourObjectName> {
public int compare(YourObjectName o1, YourObjectName o2) {
return o1.getDate() > o2.getDate() // something like that.. google how to do a compare method on two dates
}
}
şimdi sıralamak liste
Collections.sort(YourList, new CustomComparator());
Bu Listenizi en yeni öğe
'a gidecek şekilde sıralamalıdırBunun yerine bir LinkedList kullanabilirsiniz ve listenize eleman eklemek için addFirst() yöntemini kullanın ve istenen davranışa sahip olacaktır (ListView'ün en üstündeki yeni öğeler).
orijinal listeyi değiştirmeden Başka bir çözüm, Güncelleme Adaptör
@Override
public Item getItem(int position) {
return super.getItem(getCount() - position - 1);
}
içinde getItem() yöntemini geçersiz: Örnek
public class ChatAdapter extends ArrayAdapter<ChatItem> {
public ChatAdapter(Context context, List<ChatItem> chats) {
super(context, R.layout.row_chat, chats);
}
@Override
public Item getItem(int position) {
return super.getItem(getCount() - position - 1);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = inflater.inflate(R.layout.row_chat, parent, false);
}
ChatItem chatItem = getItem(position);
//Other code here
return convertView;
}
}
Bu çok zarif bir çözümdür. Küçük bir değişiklik yaptım, böylece veri maddelerini göstermeyen anonim ArrayAdapter'larda kullanabildim: 'return super.getItem (getCount() - 1 - konum)' ' –
Bu, ancak listedeki ilk öğeyi kaydırırken çalışır son öğe listesine bir kopyası gibi görünüyor. Bence bu sorun, listview öğelerinin geri dönüşümü ile ilgili (emin değil). –
Adaptördeki getItem() yöntemini nasıl geçersiz kılacağınızı söyleyebilir misiniz? – Apurva
mBlogList bir geri dönüşüm görünüşüdür ...
mBlogList=(RecyclerView) findViewById(R.id.your xml file);
mBlogList.setHasFixedSize(true);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
mBlogList.setLayoutManager(mLayoutManager);//VERTICAL FORMAT
Listenin başındaki eleman ekleyebilirsiniz:
arraylist.add(0, object)
gibi sonra herzaman üstünde yeni bir unsur gösterecektir.
- 1. ListView öğeleri,
- 2. ListView öğeleri
- 3. QML ListView filtre öğeleri
- 4. Öğeleri bir WPF ListView
- 5. Öğe listesinden öğeleri gösterme Backbone.js
- 6. Ayrı bir yer tutucuda öğeleri gösterme
- 7. Genişletilebilir ListView Öğeleri Gruplara Göre Ay/Ay
- 8. Liste animasyonunu gösterme özelliği gösterme
- 9. ListView yeni öğeler eklendiğinde titremek
- 10. WPF ListView - öğeleri programlı olarak nasıl ekleyebilirim?
- 11. Öğeleri bir WPF ListView öğesinde seçerek ayarlama
- 12. Nasıl bir ListView C# Öğeleri karıştırmak?
- 13. ListView
- 14. Listview yeni öğe ekledikten sonra ferahlatıcı değil
- 15. Yeni öğeler ekledikten sonra ListView nasıl güncellenir?
- 16. ListView için en fazla satır sayısını ayarlama
- 17. En yeni rekor
- 18. Android: ListView o doldurulan ama Yani google'dan öğeleri
- 19. WinForms ListView denetimi üzerinde çok satırlı liste öğeleri?
- 20. Android - Mevcut ListView için üstbilgi/altbilgi görünüm öğeleri nasıl değiştirilir?
- 21. ScrollReveal.js - Tıklama veya Olay tüm öğeleri gösterme? Kaydırma bir tık olayla ortaya sahip tüm öğeleri ortaya çıkarmak için bir yol
- 22. Gösterme sırasında GIF Resmi Gösterme
- 23. Metni Açarken Gösterme Divanını Gösterme
- 24. Android ListView
- 25. ListView sıralama performansı nasıl kullanılır?
- 26. ListView
- 27. ListView.
- 28. ListView
- 29. ListView
- 30. , ListView
Verilerin kaynağı nedir? Bir veritabanından okuyorsanız, her zaman sorgunun döndürdüğü sıralamayı "order by" veya eşdeğeriyle değiştirebilirsiniz. – MrLore