Как правильно переопределить `toString ()`, чтобы избавиться от хеш-кода - PullRequest
0 голосов
/ 30 декабря 2018

Я получаю тестовые данные из 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 

1 Ответ

0 голосов
/ 30 декабря 2018

Вы звоните 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());
    }
});
...