2014-10-31 27 views
2

我在我的MainActivity中有一个ListView。我使用自定义适配器来为我的ListView中的不同行膨胀不同的布局,通过检查作为参数提供给自定义适配器的String对象是否等于某个值“A”,但是当我这样做时,我从我的定制视图如何在Android中的列表视图中的行之一添加自定义视图?

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) 

回答

0

您必须告诉列表视图,您的适配器可以处理多种类型的视图。为了做到这一点你必须覆盖这2种方法: http://developer.android.com/reference/android/widget/BaseAdapter.html#getViewTypeCount() http://developer.android.com/reference/android/widget/BaseAdapter.html#getItemViewType(int)

这会告诉系统如何回收的意见。

+0

感谢您的及时回复@azertiti,但我已经做到了。一切工作正常,如果我不包括我的自定义视图,如果我有一个基本简单的另一个布局,而不是自定义视图,它工作正常,问题是使用自定义视图时。 – 2014-10-31 14:44:02

0

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

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

我的事情我可以命名我的包,我怎么想它..基本上它应该是一个反向域名,纠正我,如果我错了 ie:如果我的域名是说example.com,其反向域将是com.example 同样example.co => co.example 其余部分只是我的项目名称 co.example。 2014-10-31 15:10:47

+0

是的,我确实提供了两个参数构造函数,我想提到我的自定义视图只包含一个webview,如果这会有所帮助。 – 2014-10-31 15:14:08

+0

是的,你说得对。简单地说,我想确保'co'不是一个错误(在你的xml中),这会引发InflateException。 – wpiwonski 2014-10-31 15:17:33

相关问题