bir SimpleAdapter güncellemek mümkün mü? Veri Listem ve "Sonraki Sonuçları Görün" yazan bir altbilgi var. Liste öğesi tıklandığında olayı yakalarım ve yeni veriler aldım. Ardından ListView'deki verileri bu yeni verilerle değiştirmek istiyorum ancak nasıl yapılacağını anlayamıyorum. Herhangi bir fikir? Bir ArrayAdapter kullanmak istemiyorum, çünkü görebildiğim kadarıyla öğeler sadece bir dizeyi tutabilir ve birden fazla dizge ve satır tutmak için ihtiyacım olan yere sahip olabilir.Nasıl Android
cevap
Güncelleme: del116 göre, gerçekten de SimpleAdapter
bir değişken harita vermek ve güncellemek listeyi gerektiğinde daha sonra manuel adaptörünün notifyDataSetChanged
yöntemini çağırabilirsiniz. Ancak, aşağıda benim noktam, SimpleAdapter'in statik veri için olduğunu belirten dökümantasyonu ile ilgili duruyor; Bunu mutable veri için kullanarak, onun tasarımına ters geliyor, bu yüzden eğer bu tekniği kullanırsanız, ortaya çıktıkça yeni Android sürümlerinde çalışmaya devam edip etmediğimi kontrol edeceğim.
(Orjinal açıklama
:) izler Eğer SimpleAdapter description bakarsanız öyle diyor "statik verileri bir XML dosyasında tanımlanan görüşlere eşleştirmek için kolay bir adaptör." Vurgulamayı ekledim - basitçe, SimpleAdapater
değişmeyen verilerle kullanılmak üzere oluşturulmamış; Sadece statik verileri işler. Veri tek bir metin biraz daha vardır çünkü bir ArrayAdapter kullanamıyorsanız, o zaman kendi özel ListAdapter inşa veya DB veri koymak ve CursorAdapter s birini kullanmak zorunda kalacak ya. Eğer çok performans gerekmiyorsa
Son çare olarak, sen aracılığıyla kullanmak için liste görünümünü istediğiniz zaman veri değişikliklerini yepyeni SimpleAdapter
örneğini oluşturmak ve anlatarak bir SimpleAdapter
tarafından desteklenen bir ListView
güncelleme olabilir setListAdapter
. Performans değişebilir böylece
SimpleAdapter
, statik veriler içindir. En iyi çözüm muhtemelen böyle ArrayAdapter
olarak, adaptörün farklı türde bir geçiş veya yeni SimpleAdapter
Eğer veri kümesi değiştirmek her zaman yapmaya edilir.
ListView lv= (ListView) findViewById(R.id.loglist);
ArrayList<Map<String, String>> list = buildData();
String[] from = { "time", "message" };
int[] to = { R.id.logtime, R.id.logmessage };
adapter = new SimpleAdapter(getApplicationContext(), list,R.layout.log_list_row, from,to);
lv.setAdapter(adapter);
ListView'ü güncellemek için her seferinde bu işlevi çağırın. Bu yardımcı olur .. Yeni Verilerle liste değişkeni güncellemek zorunda Mind
Umut tutun .. :)
o yüzden benim SimpleAdapter güncelleme üzerinde çalışmaya notifyDataSetChanged() almak mümkün değildi bunun yerine ilk önce ListView ekleyerek removeAllViews() kullanarak ana düzenine bağlı olan tüm görünümleri kaldırmak çalıştı ve bu beni UI güncelleştirmek için izin çalıştı: güncellemeden sonra
LinearLayout results = (LinearLayout)findViewById(R.id.results);
ListView lv = new ListView(this);
ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.directory_row,
new String[] { "name", "dept" }, new int[] { R.id.name, R.id.dept });
for (...) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", name);
map.put("dept", dept);
list.add(map);
}
lv.setAdapter(adapter);
results.removeAllViews();
results.addView(lv);
mySimpleAdapter.notifyDataSetChanged();
kullanın bu hat verilerdeki veriler HashMap liste
dokümantasyonunu okuyunuz, SimpleAdapter üzerinde mümkün olduğu gibi mümkün değildir, SimpleAdapter bu tür eylemler için uygun değildir. – Manny265
- 1. Nasıl android
- 2. Nasıl Android
- 3. Android Uygulamasının bölümlerini Android Uygulamasına nasıl aktarırım?
- 4. Android kütüphanesinde Android kütüphanesi nasıl kurulur?
- 5. Android - Nasıl bir Android cihazdan yazdırmak için?
- 6. Nasıl android.os.DeadObjectException android tamir edersiniz android X
- 7. Android: shrinkColumns ve android: stretchColumns nasıl çalışır?
- 8. android - Edittext nasıl doldurulur?
- 9. TextSwitcher Nasıl Kullanılır Android
- 10. Nasıl MapView android
- 11. Android uygulamasından nasıl çekilir?
- 12. Android StackView nasıl görünüyor?
- 13. android URL'yi şifrelemek nasıl
- 14. Nasıl Xamarin Android
- 15. Kişilerin nasıl alınır Android
- 16. Android: Nasıl bir Fragman
- 17. Android İvmeölçer'i nasıl kullanırım?
- 18. Nasıl doInBackground yöntemi android
- 19. Nasıl dikey kaydırma Android
- 20. Android ViewSwitcher nasıl kullanılır?
- 21. Android: görüntüleri nasıl çözülür?
- 22. Android: Sıklık nasıl oluşturulur?
- 23. Android: Nasıl bir Layout
- 24. android ping ping nasıl
- 25. nasıl Espresso Android
- 26. Picasso (Android) nasıl dinlenir?
- 27. Android emülatöründe "@" nasıl yazılır?
- 28. Android
- 29. Android
- 30. android
burada Cevabınız gerçekten yanıltıcıdır. Dizi verilerini güncelledikten ve SimpleAdapter'imde notifyDataSetChanged() yöntemini çağırdıktan sonra, simpleAdapter dosyasını güncelleyebildim. NotifyDataSetChanged() öğesini çağırmak için ArrayAdapter kullanmaya gerek yoktur. – dell116
@ dell116 Yeterince adil. Cevabımın sonunda bu olasılığa başvurdum, ancak geri bildirimlerinize göre aslında çalışmayı destekledim; Ben test etmemiştim. SimpleAdapter belgelerinin statik veriler için olduğunu özellikle belirttiğinden, böyle bir şeyi yapmanın bazı dikkati hak ettiğini hala devam ettiriyorum. –
Geriye şimdi bakın ... vay. Programlama veya SimpleAdapter'ın amaçlanan amacı hakkında hiçbir şey bilmiyordum. Değiştirecek bir veri yapısı tarafından desteklenen bir ListView (veya herhangi bir AdapterView) kullanıyorsanız, SimpleAdapter kullanmayın. Foot.inMouth (doğru); – dell116