ArrayAdapter的getView()中的LayoutInflator给出了UnsupportedOperationException:AdapterView中不支持addView(View,LayoutParams)

时间:2017-01-08 01:06:28

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

我正在尝试创建一个ListView,它以我自己的布局存储项目。我正在关注this tutorial来编写我的代码。我在我的EventAdapter类中的getView中得到一个异常,它似乎来自分配convertView。到目前为止,我在SO上看到的一切都说这是分配convertView的正确方法,所以我对如何解决这个问题感到茫然。

这是我的自定义ArrayAdapter:

public class EventAdapter extends ArrayAdapter<Event> {

    public EventAdapter(Context context, int eventListItemId, ArrayList<Event> eventList) {
        super(context, eventListItemId, eventList);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        // get the data of the event at this position
        Event event = getItem(position);

        if (convertView == null) {
            convertView = LayoutInflater.from(getContext())
                    .inflate(R.layout.event_list_item_layout, parent, false); 
            // ^^^^^^   The Exception is thrown above   ^^^^^^^
        }

        // get Textviews from event_list_item_layout
        TextView name = (TextView) convertView.findViewById(R.id.event_list_name);
        ...

        // set text on the TextViews
        name.setText(event.getName());
        ...

        return convertView;
    }
}

以下是event_list_item_layout的布局,即子视图:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:gravity="center">

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <TextView
            android:id="@+id/event_list_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        ...
    </ListView>

    ...
</LinearLayout>

这是我想要列表的活动的布局(称为search_results_activity):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/results_header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/event_list_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:divider="@color/colorAccent"
        android:dividerHeight="1dp" />


</LinearLayout>

以下是错误日志:

java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView
                      at android.widget.AdapterView.addView(AdapterView.java:478)
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                      at com.mobiledevs.eventreminder.APIUtils.EventAdapter.getView(EventAdapter.java:38)

任何人都知道我哪里出错了?

0 个答案:

没有答案