我正在尝试在我的适配器的getView方法中扩充布局:
这是错误:
01-18 20:58:04.873: E/AndroidRuntime(21583): java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
01-18 20:58:04.873: E/AndroidRuntime(21583): at android.widget.AdapterView.addView(AdapterView.java:478)
01-18 20:58:04.873: E/AndroidRuntime(21583): at android.view.LayoutInflater.inflate(LayoutInflater.java:500)
01-18 20:58:04.873: E/AndroidRuntime(21583): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
01-18 20:58:04.873: E/AndroidRuntime(21583): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
01-18 20:58:04.873: E/AndroidRuntime(21583): at com.myname.myapp.gui.MyAdapter.getView(MyAdapter.java:46)
错误(根据日食发生在converView =mInflater...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
convertView = mInflater.inflate(
android.R.layout.simple_list_item_1, parent);
}
((TextView) convertView.findViewById(R.id.text1)).setText(titles
.get(position));
return convertView;
}
以下是我的适配器的构造函数:
public MyAdapter(ArrayList<String> list, Context context) {
titles = list;
this.context = context;
mInflater = LayoutInflater.from(context);
}
答案 0 :(得分:7)
最好的方法是
convertView = mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
是的,您应该传递实际的父级,因为布局可能会影响通胀中使用的参数。第三个参数表示inflate
方法是否应该将视图添加到父级。
默认情况下,它会将视图添加到父级,在这种情况下,您希望返回视图但不将其添加到父级。
你可以在这里阅读:
http://developer.android.com/reference/android/view/LayoutInflater.html#inflate(org.xmlpull.v1.XmlPullParser,android.view.ViewGroup,boolean)
从指定的xml资源中膨胀新的视图层次结构。抛出 如果出现错误,则显示InflateException。
参数:
要加载的XML布局资源的资源ID (例如, R.layout.main_page)
<强>根强> 可选视图是其父级 生成的层次结构(如果attachToRoot为true),或者只是一个 为root提供一组LayoutParams值的对象 返回的层次结构(如果attachToRoot为false。)
attachToRoot 是否 膨胀的层次结构应该附加到根参数?如果 false,root只用于创建正确的子类 XML中根视图的LayoutParams。
返回根视图 膨胀的等级。如果提供了root并且attachToRoot为true, 这是根;否则它是膨胀的XML文件的根。
答案 1 :(得分:3)
更改此行:
convertView = mInflater.inflate(android.R.layout.simple_list_item_1, parent);
对于这个:
convertView = mInflater.inflate(android.R.layout.simple_list_item_1, null);
答案 2 :(得分:0)
使用以下代码:
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = layoutInflater.inflate(R.layout.demolistlayout,parent,false);
即使没有修复,你也必须检查你的布局文件。 而且大部分都有可绘制图像的问题。