我又迷路了。我的目标如下:
public class LogInfo implements Serializable{
public ArrayList<Point[][]> strokes;
public LinkedList<byte[]> codes;
public int[] times;
...
}
首先,我从这个对象的 ArrayList 填充 ListView。然后我从 ListView 中选择一个对象,我想用字段填充新 fragment 中的新列表
public ArrayList<Point[][]> strokes;
public LinkedList<byte[]> codes;
但是,要创建 ArrayAdapter,我不能只将对象传递给它(据我所知)。我需要传递一个数组。问题是,我想传递一个先前创建和选择的对象,然后从其字段(不仅是笔划或代码,而是两者)填充列表。
我的 ObjectAdapter 类应该是什么样子,它应该扩展什么类?要从我使用的对象的 ArrayList 中选择一个对象:
public class LogInfoObjectAdapter extends ArrayAdapter<LogInfo>
示例(现实生活):
我在 parking 场有很多车,我需要列出它们,所以我使用 ArrayAdapter 来填充列表。在我从列表(汽车对象)中选择一辆汽车后,它有两个数组(例如坏掉的灯泡和坏掉的轮胎,但两个数组的大小相同)。现在我想将新列表与所选汽车的信息一起使用。我希望它足够清楚。我的问题是要使用 ArrayAdapter 我必须在构造函数中传递一个数组,但我想传递整个对象并在我的适配器类中处理它并将选择的字段添加到 ListView
最佳答案
如果你有一个包含多个列表的对象,你不需要扩展ArrayAdapter
,你可以只扩展BaseAdapter
并实现需要的方法( getCount()
、getView()
等)。
public class Adapter extends BaseAdapter {
class LogInfo implements Serializable {
public ArrayList<Point[][]> strokes;
public LinkedList<byte[]> codes;
public int[] times;
}
private LogInfo mInfo;
public Adapter(LogInfo info) {
mInfo = info;
}
@Override
public int getCount() {
if (mInfo != null && mInfo.strokes != null) {
return mInfo.strokes.size();
}
return 0;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (mInfo != null) {
Point[][] p = mInfo.strokes.get(i);
byte[] b = mInfo.codes.get(i);
//create the view
}
return null;
}
关于java - 如何从具有多个数组的对象创建 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16647326/