动态构建类并将它们添加到ArrayAdapter

时间:2015-08-09 08:34:58

标签: java android class android-arrayadapter

我有一个填充数据列表" neededRepData"我正在尝试将此列表添加到我的适配器并遇到问题。下面是我的Reps类和我的方法(来自另一个类)来遍历neededRepData。

public class Reps {
    public int icon;
    public String title;

    public Reps() {
        super();
    }

    public Reps(int icon, String title) {
        super();
        this.icon = icon;
        this.title = title;
    }
}

List<Reps> listOfReps = new ArrayList<Reps>();
    for (int i = 0; i < neededRepData.size(); i++) {
        String currentRep = neededRepData.get(i);
        listOfReps.add(new Reps(R.drawable.unknown_representative, currentRep));
    }    

此时我的listOfReps拥有我所期待的一切。但是当我创建我的适配器时,我不得不做如下的事情。

Reps customRepData[] = new Reps[]{
                       new Reps(listOfReps.get(0).icon, listOfReps.get(0).title)
    };

LocalRepAdapter adapter = new LocalRepAdapter(this, R.layout.mylist, customRepData);    

我想将我动态创建的customRepData []对象传递给我的适配器,我看不到在customRepData []的构造内循环的方法,也许有更好的方法?

我的扩展ArrayAdapter类如下所示:

public class LocalRepAdapter extends ArrayAdapter<Reps> {

Context context;
int layoutResourceId;
Reps data[] = null;

public LocalRepAdapter(Context context, int layoutResourceId, Reps[] data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
}    ......

感谢。

1 个答案:

答案 0 :(得分:2)

您被迫创建类Reps customRepData[]的数组,因为您的适配器的构造函数采用了一组类,但您可以轻松地将其更改为

public LocalRepAdapter(Context context, int layoutResourceId, ArrayList<Reps> list)

因此您不再需要Reps customRepData[],您可以将listOfReps传递给它{/ p>

LocalRepAdapter adapter = new LocalRepAdapter(this, R.layout.mylist, listOfReps);