Разбор изменяемых живых данных для массива в Котлине - PullRequest
0 голосов
/ 20 октября 2019

Массив mutableLiveData Holding 2 "сделка" и "категория" мне нужно проанализировать как в разных адаптерах.

Есть ли способ, которым я могу преобразовать 1 изменяемые данные в реальном времени в 2 массива и затем проанализировать их для двух разных адаптеров

Предположим, существует имя изменяемой переменной se

private lateinit var mHomePojo: MutableLiveData<List<HomePojo>>

с анализом Json, как показано ниже

 {
   "status": 0,
   "response": "success",
   "category": [
     {
       "categoryName": "demo",
       "categoryDesc": "demo"
     },
     {
       "categoryName": "demo1",
       "categoryDesc": "demo"
     }
   ],
   "deal": [
     {
       "dealImg": "https://aiotechnology.in/Aditechweb/upload/153102117.jpg",
       "dealDesc": "gd",
       "dealStartDate": "2019-10-18",
       "dealEndDate": "2019-10-19"
     }
   ]
 }

Есть ли способ синтаксического анализа private lateinit var mHomePojo: MutableLiveData<List<HomePojo>> до lateinit var mDealModel: MutableLiveData<List<DealModel>> и lateinit var mCategoryModel: MutableLiveData<List<CategoryModel>>

Я новичок в MVVM, пожалуйста, помогите

1 Ответ

0 голосов
/ 20 октября 2019

Я думаю, что преобразования могут помочь вам разделить ваши домашние живые данные на два отдельных объекта жизненных данных с указанными свойствами. ниже приведен фрагмент кода для этого. (ПРИМЕЧАНИЕ: латинит var не используется, например)

private val homeLiveData: LiveData<HomePojo> = MutableLiveData<HomePojo>()

//Category Live data
private val categoryPojo = Transformations.map(homeLiveData) {
    it.category
}

//Deal live data
private val dealPojo = Transformations.map(homeLiveData) {
    it.deal
}

data class HomePojo(
   /*-- Other fields --*/
   val category: List<CategoryPojo>? = null,
   val deal: List<DealPojo>? = null)


data class CategoryPojo(
    val categoryName: String? = null,
    val categoryDesc: String? = null)

data class DealPojo(
    val dealImg: String? = null,
    val dealDesc: String? = null,
    val dealStartDate: String? = null,
    val dealEndDate: String? = null)
...