尝试扩充布局时适配器中的异常

时间:2014-01-19 02:05:33

标签: java android android-listview android-arrayadapter android-adapter

我正在尝试在我的适配器的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);
    }

3 个答案:

答案 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);

即使没有修复,你也必须检查你的布局文件。 而且大部分都有可绘制图像的问题。