使用两个或更多List <string> </string> </string>扩展ArrayAdapter <string>

时间:2013-12-30 17:42:00

标签: java android

我正在尝试创建一个扩展ArrayAdapter的类(在Android中)。最初它被扩展了一个List<String>并且它工作正常,但是一旦我向参数添加了另一个List<String>super()方法就开始发出错误:构造函数{{1}是未定义的。

ArrayAdapter<String>(Context, int, List<String>, List<String>)

像这样扩展ArrayAdapter通常有什么问题吗?谢谢!

3 个答案:

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