从SQLite填充listview返回内存地址

时间:2016-05-06 19:00:16

标签: android sqlite listview

我正在尝试使用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。

请帮忙

非常感谢

1 个答案:

答案 0 :(得分:0)

你必须选择:

  1. 覆盖toString对象上的Tracks方法,以返回您要显示的字符串。

  2. 实施ArrayAdapter的子类,并在列表视图中显示的vies上正确设置数据。

  3. 建议: 1.请为您的方法开始使用驼峰案例命名。 2.查看ArrayAdapter文档。它将解释为什么你在那里看到那个地址。 (扰乱:ArrayAdapter调用用于init的对象的.toString方法