我正在尝试将数据存储到arraylist中并在另一个活动中检索它。我能够从数据库中获取数据,但无法检索它。我得到路径名而不是结果我已经发布了我的logcat,请给我任何关于如何完成它的建议
DBhelper类:
public ArrayList<LocationHelper> getAlllocations()
{
ArrayList<LocationHelper> array_list = new ArrayList<LocationHelper>();
//hp = new HashMap();
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery( "select * from "+ TABLE_LOCATION, null );
c.moveToFirst();
while(c.isAfterLast() == false){
LocationHelper locationHelper = new LocationHelper();
locationHelper.setNum(c.getString(1));
locationHelper.setPresent_lat(c.getString(4));
Log.e("Database lat: ", locationHelper.getPresent_lat());
locationHelper.setPresent_lon(c.getString(5));
Log.e("Database lon: ", locationHelper.getPresent_lon());
array_list.add(locationHelper);
Log.e("Database Data: ", String.valueOf(array_list.get(i)));
c.moveToNext();
i++;
}
return array_list;
}
LocationHelper:
public class LocationHelper {
String num;
public String getNative_lat() {
return native_lat;
}
public void setNative_lat(String native_lat) {
this.native_lat = native_lat;
}
public String getNative_lon() {
return native_lon;
}
public void setNative_lon(String native_lon) {
this.native_lon = native_lon;
}
public String getPresent_lat() {
return present_lat;
}
public void setPresent_lat(String present_lat) {
this.present_lat = present_lat;
}
public String getPresent_lon() {
return Present_lon;
}
public void setPresent_lon(String present_lon) {
Present_lon = present_lon;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
String native_lat;
String native_lon;
String present_lat;
String Present_lon;
}
logcat的:
08-21 15:28:51.364 25317-25317/? E/dalvikvm﹕ >>>>>
com.example.xxx.xxx[ userId:0 | appId:10309 ]
08-21 15:28:51.684 25317-25317/? E/Database lat:﹕ 9.08613
08-21 15:28:51.684 25317-25317/? E/Database lon:﹕ 76.4888
08-21 15:28:51.684 25317-25317/? E/Database Data:﹕
com.example.xxx.xxx.LocationHelper@4215d348
08-21 15:28:51.684 25317-25317/? E/Database lat:﹕ 9.08613
08-21 15:28:51.684 25317-25317/? E/Database lon:﹕ 76.9888
08-21 15:28:51.684 25317-25317/? E/Database Data:﹕
com.example.xxx.xxx.LocationHelper@4215d868
08-21 15:28:51.684 25317-25317/? E/Database lat:﹕ 9.58613
08-21 15:28:51.684 25317-25317/? E/Database lon:﹕ 76.4888
08-21 15:28:51.684 25317-25317/? E/Database Data:﹕
com.example.xxx.xxx.LocationHelper@4215db50
08-21 15:28:51.684 25317-25317/? E/Database lat:﹕ 9.58613
08-21 15:28:51.684 25317-25317/? E/Database lon:﹕ 76.9888
08-21 15:28:51.684 25317-25317/? E/Database Data:﹕
com.example.xxx.xxx.LocationHelper@4215de38
答案 0 :(得分:1)
尝试
Log.e("Database Data: ", String.valueOf(array_list.get(i).getPresent_lat()));
或
Log.e("Database Data: ", String.valueOf(array_list.get(i).getPresent_lon()));
而不是
Log.e("Database Data: ", String.valueOf(array_list.get(i)));
您正在尝试打印arraylist对象而不是值。
修改强>
在第一个活动中通过意图传递arraylist
intent.putExtra("array_list", array_list);
然后在第二个活动中获得这样的arraylist。
ArrayList<LocationHelper> myList = (ArrayList<LocationHelper>) getIntent().getSerializableExtra("array_list");
希望这有帮助!
答案 1 :(得分:1)
正如@gmetax所说,正在打印的哈希码。您的ArrayList
完全按照您的意愿填充。您需要使用Intent
(例如:intent.addExtras(list))将该列表传递给另一个活动,并在另一个活动中迭代该列表。
答案 2 :(得分:1)
在您的活动中尝试此操作
ArrayList<LocationHelper> locatioHelper = new ArrayList<LocationHelper>();
LocationHelper locHelper = new LocationHelper();
DBHelper db = new DBHelper();
locationHelper=db.getAlllocations();
for(int i=0;i<locationHelper.size();i++)
{
Log.i("latvalue",locHelper.get(i).getPresent_lat());
Log.i("lonvalue",locHelper.get(i).getgetPresent_lon());
}
答案 3 :(得分:0)
你的问题是你没有覆盖toString方法,你正在从db中检索内容。
对象类的默认toString方法返回
package.Class@Hashcode
添加代码
的LocationHelper类@Override
public String toString() {
return "lat : " + getPresent_lat() + ", lon : " + getPresent_lon();
}