AdapterView不支持addView(View,LayoutParams)(不在ListView标签内添加内容)

时间:2016-01-07 21:15:30

标签: java android

当我使用ListView并编写适配器时,扩展BaseAdapter会出现此错误。而且我确信我没有在ListView标签中添加任何内容。

这是我的main_layout.xml

 <LinearLayout
        android:id="@+id/layout_map"
        android:layout_width="match_parent"
        android:layout_height="1200px"
        android:layout_below="@+id/toolbar"
        android:orientation="horizontal">
        <org.osmdroid.views.MapView
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

            android:clickable="true"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/layout_lv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/layout_map"
        android:clickable="true"
        android:orientation="vertical">

        <ListView
            android:id="@+id/lv_stops"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentBottom="true"
            android:clickable="true"></ListView>
    </LinearLayout>

这是我的list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="fill_parent">
            <ImageView
                android:id="@+id/stopImage"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                />

        </LinearLayout>
        <LinearLayout
            android:layout_weight="5"
            android:layout_width="0dp"
            android:orientation="vertical"
            android:layout_height="fill_parent">

                <TextView
                    android:id="@+id/stop_name_item"
                    android:layout_width="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:gravity="center_vertical"
                    android:layout_height="fill_parent" />

                <TextView
                    android:id="@+id/stop_info_item"
                    android:layout_width="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:gravity="center_vertical"
                    android:layout_height="fill_parent" />


        </LinearLayout>


    </LinearLayout>
</ListView>

这是我的适配器

public class MainActivityStopAdapter extends BaseAdapter {
    private Context mContext;
    private ArrayList<Stop> stopList = null;

    public MainActivityStopAdapter(Context mContext, ArrayList<Stop> mList) {
        this.mContext = mContext;
        this.stopList = mList;
    }

    public int getCount() {
        return stopList.size();
    }

    public Object getItem(int pos){
        return stopList.get(pos);
    }

    public long getItemId(int pos){
        return pos;
    }

    public View getView(final int pos, View convertView, ViewGroup p){
        final ViewHolder viewHolder;
        if(convertView == null){
            convertView = LayoutInflater.from(mContext).inflate(R.layout.stop_list_item,null);
            viewHolder = new ViewHolder();
            viewHolder.stopImage = (ImageView)convertView.findViewById(R.id.stopImage);
            viewHolder.stopName = (TextView)convertView.findViewById(R.id.stop_name_item);
            viewHolder.stopInfo = (TextView)convertView.findViewById(R.id.stop_info_item);

            convertView.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.stopImage.setImageResource(R.drawable.ic_bus_stop);
        viewHolder.stopName.setText(stopList.get(pos).getName());
        viewHolder.stopInfo.setText(stopList.get(pos).getId());
        return convertView;
    }

    public static class ViewHolder{
        public ImageView stopImage;
        public TextView stopName;
        public TextView stopInfo;
    }
}

1 个答案:

答案 0 :(得分:2)

删除ListView布局中的list_item根元素。子LinearLayout足以作为布局中的根元素。

ListView不应该在XML中声明子项,并且在ListView行项目中放置ListView无论如何都没有意义。