我正在从Room
检索测试数据,尽管我在toString()
类中覆盖了@Entity
方法,但我得到的只是哈希码数据。我怎么知道是否使用了覆盖方法?
我已经使用Room
分别为database
,repository
,viewModel
和view
设置了Live-data
。从onCreate中,我有一个observer
可以正确触发,并显示数据。如预期的那样,是has-code
数据。通常,我通过覆盖string
类中的toString()
并在@Entity
中使用它来将其转换为onCreate()
数据,但是它不起作用。它仍然给我hash
数据。
在我的@Entity
类中,我像这样覆盖toString()
:
@Override
public String toString() {
return "MyEntity{" +
"id=" + id +
", title='" + title + '\'' +
", description='" + description + '\'' +
", priority=" + priority +
'}';
}
然后在我的onCreate()
中,我使用以下命令呼叫Interface
:
myViewModel.getAllData().observe( this, new Observer<List<MyEntity>>() {
@Override
public void onChanged(@Nullable List<MyEntity> myEntities) {
Log.d("TAG: ", "DATA CHANGED! " + myViewModel.getAllData().toString());
}
} );
但是尽管使用了.toString()
,我仍然只获得哈希数据:
D/TAG:: DATA CHANGED! android.arch.lifecycle.ComputableLiveData$1@a12e85e
我希望一些基本的测试数据:
"MY FIRST OBJECT", "THIS IS MY OBJECT", 1
答案 0 :(得分:0)
您正在toString()
上呼叫ComputableLiveData
,
您必须在toString()
上调用myEntities
,然后依次在toString()
的各个元素上调用MyEntity
。
myViewModel.getAllData().observe( this, new Observer<List<MyEntity>>() {
@Override
public void onChanged(@Nullable List<MyEntity> myEntities) {
Log.d("TAG: ", "DATA CHANGED! " + myEntities.toString());
}
});