我正在尝试创建一个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)
任何人都知道我哪里出错了?