如何初始化我的BaseAdapter

时间:2013-01-05 02:28:25

标签: android android-activity arraylist initialization baseadapter

这是我自定义BaseAdapter的构造函数

public MyAdapterAds(Activity activity, BaseAdapter delegate) {
    this.activity = activity;
    this.delegate = delegate;
}

我有一个名为mObjects的对象的arraylist。如何从我的活动中将他们纳入此方法?

如何初始化baseAdapter

这是我试过的

 myAdapter = new myAdapterAds(MainActivity.this, new ArrayAdapter<myObject>(context, R.layout.my_object_cell, myObjectArray));

没有理由这样做,但我刚刚开始重写这个baseadapter,我将如何重写最后一部分以获取其中的对象数组?

我一直得到“IllegalStateException:ArrayAdapter要求资源是一个textview”但我使用的是一个带有几个参数的对象,为什么我会显示一个textview?

2 个答案:

答案 0 :(得分:2)


           ExampleAdapter adapter = new ExampleAdapter();
        adapter.notifyDataSetChanged();
        ls.setAdapter(adapter);

公共类 ExampleAdapter 扩展 BaseAdapter {         ViewHolder holder;

    public View getView(final int position, View convertView,
            ViewGroup parent) {
        if (convertView == null) {

            LayoutInflater inflater = getLayoutInflater();
            convertView = inflater.inflate(R.layout.listitem, null);

            holder = new ViewHolder();
            holder.name = (TextView) convertView
                    .findViewById(R.id.textView1);


            convertView.setTag(holder);
        } else {

            holder = (ViewHolder) convertView.getTag();

        }


        holder.name.setText("name");


        return convertView;
    }

    private class ViewHolder {

        private TextView name;

    }

    @Override
    public boolean isEmpty() {
        return false;
    }

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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

}

答案 1 :(得分:1)

您的适配器是否不是BaseAdapter的子类?通常,您希望执行以下操作:https://stackoverflow.com/a/2265712/832776

警告的原因是默认的ArrayAdapter构造函数要求布局只包含一个TextView;所以我会检查my_object_cell.xml是否有效。如果您计划拥有多个TextView或不同的小部件,则可以使用setViewBinder()将对象的属性与ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)构造函数一起分配给每个视图。