我正在尝试使用AndroidStudio 2.1中的Java从我的SQLite数据库填充listview
我遇到的问题是返回的数据是内存地址而不是对象,如下所示
http://i.imgur.com/03ktUhs.jpg
这是我的MainActivity类:
公共类MainActivity扩展了ListActivity {
DBHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DBHelper(this, null, null, 1);
db.addTrack(new Tracks("track1", "www.abc.com"));
db.addTrack(new Tracks("track2", "www.def.com"));
List<Tracks> list = db.getAllTracks();
ArrayAdapter<Tracks> adapter = new ArrayAdapter<Tracks>(
this,
android.R.layout.simple_list_item_1,
list);
setListAdapter(adapter);
}
}
以下是getAllTracks()
的方法public List<Tracks> getAllTracks(){
List<Tracks> tracks = new LinkedList<Tracks>();
String query = "SELECT * FROM " + TABLE_TRACKS;
SQLiteDatabase db = getWritableDatabase();
Cursor cursor = db.rawQuery(query,null);
Tracks track = null;
if(cursor.moveToFirst()){
do{
track = new Tracks();
track.set_id(Integer.parseInt(cursor.getString(0)));
track.set_trackName(cursor.getString(1));
track.set_trackURL(cursor.getString(2));
tracks.add(track);
}while(cursor.moveToNext());
}
return tracks;
}
我做错了什么?
我想在列表视图中显示名称track1和track2 然后在用户点击listview项后,它会加载相关的URL。
请帮忙
非常感谢
答案 0 :(得分:0)
你必须选择:
覆盖toString
对象上的Tracks
方法,以返回您要显示的字符串。
实施ArrayAdapter
的子类,并在列表视图中显示的vies上正确设置数据。
建议:
1.请为您的方法开始使用驼峰案例命名。
2.查看ArrayAdapter
文档。它将解释为什么你在那里看到那个地址。 (扰乱:ArrayAdapter
调用用于init的对象的.toString方法