我正在尝试创建一个扩展ArrayAdapter
的类(在Android中)。最初它被扩展了一个List<String>
并且它工作正常,但是一旦我向参数添加了另一个List<String>
,super(
)方法就开始发出错误:构造函数{{1}是未定义的。
ArrayAdapter<String>(Context, int, List<String>, List<String>)
像这样扩展ArrayAdapter通常有什么问题吗?谢谢!
答案 0 :(得分:1)
http://developer.android.com/reference/android/widget/ArrayAdapter.html
看看公共建设者。此ArrayAdapter(Context, int, List, List)
与文档中的一个不匹配。
ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)
Constructor
将上下文,资源和列表作为参数
使用
super(c, R.layout.location_item, v);
您还可以考虑将Model类与getter和setter一起使用,并使用模型类对象的arraylist。
编辑:
class Environment
{
String value1;
String value2
public Environment(String s1,String s2)
{
this.value1 =s1;
this.value2 =s2;
}
}
现在
ArrayList<Environment> e = new ArrayList<Environment>();
添加
e.add(new Environment("s1","s2");
带有getter和setter的模型类。你没有获得大的差异,并设置了全部
的方法class Environment
{
String value1;
String value2
public void setValue1(String value1)
{
this.value1=value1;
}
public void setValue2(String value2)
{
this.value2=value2;
}
public String getValue1()
{
return this.value1;
}
public String getValue2()
{
return this.value2;
}
}
现在
ArrayList<Environment> e = new ArrayList<Environment>();
添加
Environment en = new Environment();
en.setvalue1("s1");
en.setValue2("s2");
e.add(en);
现在将此列表e
传递给适配器类的构造函数。
答案 1 :(得分:0)
您不能将2个列表用作他知道只能使用一个数组的数组适配器的参数。 什么是第二个目的?
答案 2 :(得分:0)
尝试使用此字符串创建新的Object,并特此列出新的Object,如下所示:
public class TwoString {
private String value;
private String id;
public TwoString( String id, String value ) {
this.value = value;
this.id = id;
}
}
并将它们设置为Adapter
public class LocationListAdapter extends ArrayAdapter<TwoString> {
private final List<TwoString> values;
private final Context context;
private ListItemListener listener = null;
public LocationListAdapter( Context c,
int textViewResourceId,
List<TwoString> v) {
super(c, R.layout.location_item, v );
context = c;
values = v;
}
}