Android: başlık bir görünüm ExpandableListView eklerken ClassCastException
Böyle bir ExpandableListView için bir başlık eklemek için çalışıyorum
headerView = View.inflate(this, R.layout.header, null);
expandableListView.addHeaderView(headerView);
expandableListView.setAdapter(new SectionedAdapter(this));
Bana aşağıdaki hata verir:
12-08 16:23:42.354:
ERROR/AndroidRuntime(421): Caused by:java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
12-08 16:23:42.354: ERROR/AndroidRuntime(421): at android.widget.ListView.clearRecycledState(ListView.java:504)
12-08 16:23:42.354: ERROR/AndroidRuntime(421): at android.widget.ListView.resetList(ListView.java:490)
12-08 16:23:42.354:ERROR/AndroidRuntime(421):at android.widget.ListView.setAdapter(ListView.java:422)
12-08 16:23:42.354:ERROR/AndroidRuntime(421): at android.widget.ExpandableListView.setAdapter(ExpandableListView.java:475)
Bu expandableListView.setAdapter(new SectionedAdapter(this))
, çağrı oluyor ama neden olduğunu çözemedim. Herhangi bir fikir?
CEVAP
Tamam, bunu anladım. Programlama yoluyla böyle bir liste Görünümü LayoutParams için görünümün LayoutParams ayarlayarak çalışma zamanı hatası kurtuldum:
headerView.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.FILL_PARENT, ListView.LayoutParams.WRAP_CONTENT));
görünüm eklemeden önce. Bunun sebebi, Android dokümanlar bulundu
hangi devletler:
Bu parametreler tedarik üstbu görüş düzenlenmiş nasıl olması gerektiğini belirleme. Çok var ViewGroup alt sınıfları.LayoutParams, ve bu farklı karşılık bu ViewGroup alt onların düzenlenmesi çocuklar.
Eğer başka bir görünüm eklemiş olursunuz yani Kısacası, ebeveyn kullandığı LayoutParams türü için görünümün LayoutParams ayarlamanız GEREKİR, ya da bir çalışma zamanı hatası alırsınız.
Android "bu hiyerarşi görüşlerini...
Kolay bir şekilde Android bir Görünüm ...
Android 1.6: "android.görünüm.Pen...
Android Launcher etkinlik başlık etike...
Bir başlık olmadan bir İletişim oluştu...