如何在Android的列表视图中的一行中添加自定义视图?

时间:2014-10-31 14:12:19

标签: android listview

我的MainActivity中有一个ListView。我使用自定义适配器为我的ListView中的不同行扩充不同的布局,通过检查作为自定义适配器的参数提供的String对象是否等于某个值说“A”,但是当我这样做时,我得到了来自我的下面的通胀错误自定义视图

10-31 19:28:34.915: E/AndroidRuntime(14455): FATAL EXCEPTION: main
10-31 19:28:34.915: E/AndroidRuntime(14455): Process: co.example.customviewtest, PID: 14455
10-31 19:28:34.915: E/AndroidRuntime(14455): android.view.InflateException: Binary XML file line #8: Error inflating class co.example.customviewtest.MyCustomView
10-31 19:28:34.915: E/AndroidRuntime(14455): at android.view.LayoutInflater.createView(LayoutInflater.java:620)
10-31 19:28:34.915: E/AndroidRuntime(14455):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
10-31 19:28:34.915: E/AndroidRuntime(14455):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)

2 个答案:

答案 0 :(得分:0)

您必须告诉listview您的适配器适用于多种类型的视图。为此,您必须覆盖以下两种方法: http://developer.android.com/reference/android/widget/BaseAdapter.html#getViewTypeCount() http://developer.android.com/reference/android/widget/BaseAdapter.html#getItemViewType(int)

这将告诉系统如何回收您的观点。

答案 1 :(得分:0)

'co.example.customviewtest.MyCustomView'是您自定义视图的正确全名吗?包名真的以“co”而不是“com”开头吗?您是否在“MyCustomView”类中提供了两个参数构造函数?

public MyCustomView(Context context, AttributeSet attrs) {
    super(context, attrs);
}