Обработка и рендеринг данных из смеси данных stati c + Room Sqlite data - PullRequest
0 голосов
/ 29 марта 2020

У меня есть приложение Android, которое использует двумерный набор данных, например:

  1 2 3
1 A B C
2 D E F
3 G H I

Значения A, B, C этих данных могут поступать из одного из двух мест:

  1. Карта с жестким кодом в классе Kotlin (по умолчанию).
  2. Необязательные значения переопределения в базе данных sqlite DB.

Пользователь При желании можно настроить некоторые значения, например, некоторые записи переопределений в базе данных могут выглядеть следующим образом:

x,y,value
2,2,X
3,1,Y
3,3,Z

Что обновит мои объединенные данные до следующего:

  1 2 3
1 A B Y
2 D X F
3 G H Z

У меня есть данные переопределения при добавлении в БД, и у меня есть исходные данные в классе Kotlin, но я борюсь с правильным подходом для извлечения и объединения этих данных для использования в вычислениях, а также для рендеринга в виде таблицы для пользователя.

Как я могу подойти к этому? Я знаю о LiveData и RecyclerView, но примеры, которые я использовал, предполагают полный набор данных в БД, поэтому я не знаю, как бы «заполнить пробелы», используя данные в моем Kotlin классе. Кроме того, я не уверен, что мне следует использовать LiveData для аспектов вычислений, которые включают сравнение произвольного ввода, сделанного пользователем, со значением в таблице.

Любой совет приветствуется:)

1 Ответ

0 голосов
/ 29 марта 2020

Как обычно в этих сценариях ios, вскоре после публикации вопроса я пришел с ответом. Это кажется логичным, поэтому пока я буду с ним go, вот в чем суть.

Я создал ViewModel, содержащую список LiveData моих данных. Затем я добавил наблюдателя внутри создания соответствующих мероприятий.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    myViewModel.myData.observe(this, Observer {
        data -> data?.let { myStaticDataClass.mergeFromDatabase(it) }
    })
}

Тогда метод mergeFromDatabase объединит записи из базы данных с моими данными c, создавая объединенную версию.

fun mergeFromDatabase(dbValues: List<MyData>)
{
    for (value in dbValues) {
        staticData[value.keyY]?.set(value.keyX, value.customValue)
    }
}

Является ли это идеальным решением Я не знаю, но пока все хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...