如何从具有多个数组的Object创建ListView

时间:2013-05-20 10:18:03

标签: java android arrays listview object

我又迷路了。我的目标如下:

public class LogInfo implements Serializable{


public ArrayList<Point[][]> strokes;
public LinkedList<byte[]> codes;
public int[] times;

...
}

首先,我从这个对象的ArrayList填充ListView。然后我从ListView中选择一个对象,我想在新的片段中用字段

填充新列表
public ArrayList<Point[][]> strokes;
public LinkedList<byte[]> codes;

但是,要创建一个ArrayAdapter,我不能只是将对象传递给它(据我所知)。我需要传递一个数组。问题是,我想传递一个先前创建和选择的对象,然后从其字段填充列表(不仅是笔画或代码,还包括它们)。

我的ObjectAdapter类应该如何以及它应该扩展到哪个类?从我使用的对象的ArrayList中选择一个Object:

public class LogInfoObjectAdapter extends ArrayAdapter<LogInfo>

示例(现实生活):

我在停车场上有很多车,我需要列出它们,所以我使用ArrayAdapter来填充列表。从列表(汽车对象)中选择一辆汽车后,它有两个阵列(例如破碎的灯泡和破损的轮胎,但两个阵列都是相同的尺寸)。现在我希望新列表中包含选定汽车的信息。我希望它足够清楚。我的问题是使用ArrayAdapter我必须在构造函数中传递一个数组,但我想传递整个对象并在我的适配器类中处理它并将选择的字段添加到ListView

2 个答案:

答案 0 :(得分:1)

如果您有一个包含多个列表的对象,则不需要扩展ArrayAdapter,您只需扩展BaseAdapter并实施所需的方法(getCount(),{ {1}}等。)

getView()

}

答案 1 :(得分:0)

1)数组适配器有方法getItem(),您可以使用它来获取索引的特定项。 2)使您的LogInfo实现IIterable接口 http://developer.android.com/reference/java/lang/Iterable.html

public class LogInfo implements Serializable, Iterable<Point[][]>{


public ArrayList<Point[][]> strokes;
public LinkedList<byte[]> codes;
public int[] times;

public abstract Iterator<Point[][]> iterator (){

//Iterator implementation

}

现在,您可以直接在其他列表中使用此对象,该列表具有以下签名

public class LogInfoObjectAdapter extends ArrayAdapter<Point[][]>