为什么base参数在布局缓冲器中出错?

时间:2016-05-03 14:52:03

标签: android baseadapter layout-inflater

我正在创建自定义BaseAdapter

public class CustomAdapter extends BaseAdapter {

    Context c;
    ArrayList<String> items;

    CustomAdapter(Context c,ArrayList<String> items)
    {

        this.c=c;
        this.items=items;

    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public Object getItem(int i) {
        return items.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {

        View v= view;
        TextView tv;
        LayoutInflater layoutInflater = (LayoutInflater)c
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        ViewHolder pattern;

        if(view==null)
        {

            v = layoutInflater.inflate(R.layout.dummy,viewGroup,true);



            tv = (TextView)v.findViewById(R.id.textView);

            pattern = new ViewHolder(v);
            v.setTag(pattern);
        }
        else{
            pattern = (ViewHolder)v.getTag();
            return v;
        }

        pattern.tv.setText(items.get(i));



        return v;
    }
}

我收到此错误,

addView(View, LayoutParams) is not supported in AdapterView

这是因为我在此代码中传递了true

v = layoutInflater.inflate(R.layout.dummy,viewGroup,true);

我的问题是为什么我们在这里传递时会出现错误? BaseAdapter不接受吗?

1 个答案:

答案 0 :(得分:1)

inflate方法中的boolean参数确定是否应将创建的视图添加到您作为第二个参数提供的ViewGroup中。 doc

由于您的第二个参数是AdapterView,Android会尝试将视图直接添加到AdapterView。 但AdapterView并不支持addView()方法ref

您不应该在getView()方法中将视图直接添加到ViewGroup。回来吧,你应该没问题。