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

EGH*_*HDK 0 java android android-arrayadapter android-listview 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)
Run Code Online (Sandbox Code Playgroud)

错误(根据日食发生在 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;
}
Run Code Online (Sandbox Code Playgroud)

这是我的适配器的构造函数:

public MyAdapter(ArrayList<String> list, Context context) {
        titles = list;
        this.context = context;
        mInflater = LayoutInflater.from(context);
    }
Run Code Online (Sandbox Code Playgroud)

Ped*_*iro 7

最好的方法是

convertView = mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
Run Code Online (Sandbox Code Playgroud)

是的,您应该传递实际的父级,因为布局可能会影响通胀中使用的参数.第三个参数表示方法是否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)

root 可选视图是生成的层次结构的父级(如果attachToRoot为true),或者只是为返回的层次结构的根提供一组LayoutParams值的对象(如果attachToRoot为false).

attachToRoot 是否应将膨胀的层次结构附加到根参数?如果为false,则root仅用于为XML中的根视图创建LayoutParams的正确子类.

返回膨胀层次结构的根视图.如果提供了root并且attachToRoot为true,则为root; 否则它是膨胀的XML文件的根.