我正在尝试记录数组列表的内容。arraylist包含一个带有4个参数的自定义对象。当我执行下面的代码时,我得到了以下日志。我想要的是一个名称、类、三十、九十、名称、类、三十、九十等字符串
自定义对象类:
public class Data {
String NAME;
String CLASS;
String THIRTY;//this is the thirty day supply
String NINETY;//this is the ninety day supply
public Data(){
super();
}
public Data(String NAME, String CLASS, String THIRTY, String NINETY){
super();
this.NAME = NAME;
this.CLASS = CLASS;
this.THIRTY = THIRTY;
this.NINETY = NINETY;
}
}活动:
ArrayList<Data> array = new ArrayList<Data>();
Cursor c = mDBHelper.getReadableDatabase().query(Constants.K_Table, null, Constants.Name +"=?", new String[] {SEARCH}, null, null, null);
startManagingCursor(c);
if (c.moveToFirst()){
NAME = c.getString(c.getColumnIndex(Constants.Name));
CLASS = c.getString(c.getColumnIndex(Constants.Class));
THIRTY = c.getString(c.getColumnIndex(Constants.Month));
NINETY = c.getString(c.getColumnIndex(Constants.Three_Month));
array.add(new DrugData(NAME, CLASS, THIRTY, NINETY));
Log.d(TAG, "array contains: "+ array.toArray().toString());
}while(c.moveToNext());日志:
01-28 22:31:44.742: D/Activity(23656): the array contains: [com.Data@40552050]发布于 2012-01-29 13:47:36
要实现打印对象字符串的目标,您必须在代码中做两件事。
1)覆盖toString方法。
@Override
public String toString() {
return "Data [NAME=" + NAME + ", CLASS=" + CLASS + ", THIRTY=" + THIRTY
+ ", NINETY=" + NINETY + "]";
}2) ArrayList<Data> array是数据对象的集合。您必须指定要打印的对象。您可以通过两种方式来完成此操作。
int index = 0;// Index of object in the ArrayList
Log.i("Data",array.get(index).toString());//Preferred Method to get object
Log.i("Data",array.toArray()[index].toString());您可以遍历数组以打印所有数据对象,如下所示
for (Data data : array) {
Log.i("Data",data.toString());
}发布于 2012-01-29 11:56:07
向您的Data类添加一个toString()方法。
像这样
public String toString() {
return NAME + " " + CLASS + " " THIRTY + " " + NINETY;
}发布于 2012-01-29 11:59:59
调用array.toArray().toString()调用Object类的toString方法,该方法打印数组在内存中所在位置的散列。
我想你想要的东西是这样的:
Log.d(TAG, "added "+ NAME + ":" + CLASS + ":" + THIRTY + ":" + NINETY + " to array";https://stackoverflow.com/questions/9050776
复制相似问题