这是我自定义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?
答案 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)
构造函数一起分配给每个视图。