1

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

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

我有一个名为 mObjects 的对象数组列表。如何从我的活动中让他们进入这种方法?

如何初始化我的 baseAdapter

这就是我尝试过的

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

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

我不断收到“IllegalStateException:ArrayAdapter 要求资源是 textview”,但我使用的是带有多个参数的对象,为什么要显示 textview?

4

2 回答 2

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;
    }

}
于 2013-01-05T04:59:38.077 回答
1

您的适配器不是的子类有什么原因BaseAdapter吗?通常你想做这样的事情:https ://stackoverflow.com/a/2265712/832776

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

于 2013-01-05T02:43:46.893 回答