Farklı öğeler için farklı düzenler içeren bir ListViewim var. Bazı öğeler ayırıcılar. Bazı öğeler farklıdır, çünkü bunlar farklı türde verileri barındırırlar, vb.Farklı öğe düzenleriyle ListViews için ViewHolders oluşturma
GetView işlemini hızlandırmak için ViewHolders'ı uygulamak istiyorum, ancak bunun nasıl yapılacağından emin değilim. Farklı düzenler farklı veri parçaları (adlandırma zorlaştırır) ve kullanmak istediğim farklı Sayılarda görünümleri vardır.
Bunu yapmak için nasıl gitmeliyim?
En iyi fikir, X öğelerini içeren X öğesi içeren genel bir ViewHolder oluşturmaktır; burada X, bir öğe düzeninde en yüksek sayıya sahip Görünüm sayısıdır. Az sayıda Görüntülenme ile diğer görünümler için, yalnızca ViewHolder'daki bu değişkenlerin alt bölümlerini kullanacağım. Yani 2 farklı öğe için kullandığım 2 düzenim var. Biri 3 TextViews ve diğeri 1'dir. 3 TextView değişkenine sahip bir ViewHolder yaratacağım ve sadece diğer öğem için bunlardan sadece birini kullanacağım. Benim sorunum, bu gerçekten çirkin görünümlü ve gerçekten hacky hissediyor olabilir; özellikle bir öğe düzeninde birçok farklı türde birçok Görüntülenme olduğunda.
Ben satır düzenlerinin farklı türde vardı@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyHolder holder;
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.layout_mylistlist_item, parent, false);
holder = new MyHolder();
holder.text = (TextView) v.findViewById(R.id.mylist_itemname);
v.setTag(holder);
}
else {
holder = (MyHolder)v.getTag();
}
MyListItem myItem = m_items.get(position);
// set up the list item
if (myItem != null) {
// set item text
if (holder.text != null) {
holder.text.setText(myItem.getItemName());
}
}
// return the created view
return v;
}
varsayalım, ben sıranın her türü için bir ViewHolder olabilir:
Burada çok temel GetView olduğunu. Ama en üstte "sahibi" olarak ne tür bir tür ilan edeyim? Ya da her bir tip için bir tutucu ilan edip, üzerinde olduğum satırın türü için birini kullanır mıyım?
uzanır. ListActivities'imdaki getView işlevlerinin başında, tanımlanmış olan bu tutucu için ListView'ı başlatıyorum. Sonra null ve getTag için convertView kontrol edin veya tutucu oluşturmak ve öğeleri ayarlayın. Öğe türleri için farklı tutucular kullanacaksam, getView'ın başlangıcında sahip olduğumu nasıl bildirmeliyim? Veya tüm öğe türlerim için 1'i başlatmam ve satırın türüne karşılık gelen değeri başlatıp kullanmam gerekir mi? – Andrew
Lütfen editörümüzü en güncel – Andrew
@Andrew adresli web sitemize bakın, her bir tutucu durum ifadelerinden birinde ayrı ayrı tanımlanacaktır. Varolan kodunuzun tümünü ecah durum beyanına getirin, ancak her biri için görüntüleyici türünü ve veri işlemeyi değiştirin. Cevabımı bir örnekle biraz düzenleyeceğim. – CodeFusionMobile