我的数据库肯定是正确填充的(< 3 SQLite数据库浏览器),但当我尝试列出视图中的所有记录时,我得到以下内容:
com.example.AppName.ObjectName@4055e8c6
com.example.AppName.ObjectName@3456e789
com.example.AppName.ObjectName@4563e5b0
我使用的是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 :(得分:0)
在我看来,你试图看到Object
类的值,它会返回正确的值
com.example.AppName.ObjectName@4055e8c6
com.example.AppName.ObjectName@3456e789
com.example.AppName.ObjectName@4563e5b0
尝试返回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);
}
答案 1 :(得分:0)
您所看到的是toString()
个对象的ObjectName
的默认实现。
覆盖toString()
类中的ObjectName
以生成字符串表示以供显示。
由于数据显然来自数据库查询,因此也值得考虑使用游标适配器而不是数组适配器。