2014-05-02 187 views
0

我的数据库是绝对正确填入(< 3 SQLite数据库浏览器),但是当我尝试列出在一个视图中的所有记录,我得到如下:的Android SQLite的返回游标垃圾

[email protected] 
[email protected] 
[email protected] 

我使用simple_list_item_1和一个ArrayAdapter。以上活动课

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_saved_objects); 

    datasource = new ObjectsDatabase(this); 
    datasource.open(); 

    List<Object> values = datasource.getSavedObjects(); 

    ArrayAdapter<ObjectName> adapter = new ArrayAdapter<ObjectName>(this, 
      android.R.layout.simple_list_item_1, values); 
    setListAdapter(adapter); 
} 

XML布局:

在我的活动类创建声明

<LinearLayout 
    android:id="@+id/group" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <Button 
     android:id="@+id/menu" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:onClick="onButton1Click" 
     android:text="@string/menu_back" /> 

</LinearLayout> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" /> 

有什么想法?

+0

你为什么使用ArrayAdapter而不是SimpleCursorAdapter(即设计有光标和SQLite工作)? – Everett

回答

0

在我看来你是想看看Object类的值,这将返回正确的值作为

[email protected] 
[email protected] 
[email protected] 

尝试返回String没有Object,创造List<String>。您始终可以创建自己的类型element,获取该自定义类对象并返回它的String值。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_saved_objects); 

    datasource = new ObjectsDatabase(this); 
    datasource.open(); 

    List<String> values = datasource.getSavedObjects(); 

    ArrayAdapter<ObjectName> adapter = new ArrayAdapter<ObjectName>(this, 
      android.R.layout.simple_list_item_1, values); 
    setListAdapter(adapter); 
} 
+0

这对我来说完全有意义,我只是不确定在代码中发生了什么。谢谢你的回答,我会玩这个:) – user3594597

0

,你看到的是toString()ObjectName对象的默认实现。

在您的ObjectName类中重写toString()以生成用于显示目的的字符串表示形式。

由于数据显然来自数据库查询,因此使用游标适配器而不是阵列适配器也值得考虑。