2008-11-13 22 views
20

Uygulamamın ana ekranını görüntülemek için ListView kullanıyorum.
Ana ekran, farklı uygulama bölümlerine girmek için esasen menu'dur. Şu anda, içeriği onCreate yönteminde program aracılığıyla eklenen ListView var. Android'in ListView'ünde menü öğeleri için simgeleri nasıl oluşturabilirim?

String[] mainItems = { 
    "Inbox", "Projects", "Contexts", "Next Actions" 
} 

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 

    setListAdapter(new ArrayAdapter<String>(
      this, android.R.layout.simple_list_item_1, mainItems)); 
    registerForContextMenu(getListView()); 
} 

Yani menü esasen mainItems dizide yer alan metin ile düğümlerin sadece bir demet: Burada

bunu yapar kod parçacığı olduğunu. İçinde bir ImageView ve TextView bulunan bir XML mizanpajı (yani, R.layout.mainMenu_item) oluşturabileceğimi biliyorum, ancak ImageView'ın simgesini nasıl ayarlayacağımı bilmiyorum. Bir setImageResouce (int resId) yöntemi olduğunu gördüm, ancak bunu bir ArrayAdapter ile oluştururken kullanmanın yolu beni utandırıyor. Bunu yapmanın daha iyi bir yolu var mı?

cevap

15

Genellikle bir ListView için yaptığım şey, kullanışlı BaseAdapter sınıfını genişleterek kendi Bağdaştırıcımı uygulamaktır. Uygulayacağınız soyut yöntemlerden biri, bahsi geçen poster olarak getView() olacaktır. Buradan, bir ImageView içeren bir düzeni şişirebilir, findViewById kullanarak bir referans alabilir ve görüntüyü, kaynaklarınıza eklediğiniz çekilebilir olana ayarlayabilirsiniz.

public View getView(int position, View convertView, ViewGroup parent) { 

    View row = inflater.inflate(R.layout.menu_row, null); 

    ImageView icon = (ImageView) row.findViewById(R.id.icon); 
    icon.setImageResource(..your drawable's id...); 

    return view; 
} 
+12

Gerçekten convertView'a bakmanız ve gerçekten ihtiyacınız olduğunda yeni satırları şişirmeniz gerektiğini unutmayın. ConvertView boş değilse, geri dönüşüm için daha önce şişirilmiş bazı geçmiş satırdır. Simgeyi sıfırlayın ve geri dönüştürülmüş satırı döndürün. Daha az çöp yaratıldı, daha hızlı yürütme. – CommonsWare

1

ArrayAdapter için Google Dokümanlar'dan.

sonuç görüşlerini doldurun) (örneğin, dizi gösterimi için ImageViews TextView'lar dışında bir şey kullanmak veya toString yanında verilerin bazılarına sahip olmak, GetView (int, Görünüm, ViewGroup geçersiz) Görüntülemek istediğiniz türünü döndürmek.

İlgili konular