Как использовать Карты в Классе Модели / Классах Данных - PullRequest
0 голосов
/ 25 апреля 2020

Я использую FirestoreRecyclerView для отображения моих данных в CardViews. До сих пор это было гладко, пока мне не пришлось использовать map s:

Customers [Collection]
    Customer 1 [Document]
        status: "VIP" [Field]
        name: "Rudolf Heinrich" [Field]
        breakfast [Map]
            meal: "Eggs Benedict" [String]
            coffee: true [Boolean]
            guest: 2 [Int]
        lunch [Map]
            meal: "Tuna" [String]
            coffee: false [Boolean]
            guest: 2 [Int]
        dinner [Map]
            meal: "Zucchini Chicken Alfredo" [String]
            coffee: false [Boolean]
            guest: 2 [Int]

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

@Keep
@Parcelize
class CustomerModel (
    var status: String,
    var name: String,
    var breakfast: Map??

) : Parcelable

... и как извлечь данные Map в onBindViewHolder ?

override fun onBindViewHolder(
    holder: CustomerViewHolder,
    position: Int,
    model: CustomerModel
) {
    holder.status.text = model.status
    holder.name.text = model.name
    holder.meal.text = model.breakfast.meal // is this correct?
    holder.coffee.text = model.breakfast.coffee // is this correct?
    holder.guest.text = model.breakfast.guest // is this correct?

Дополнительный вопрос:

Что, если для класса Model требуется два map s с тем же полем?

@Keep
@Parcelize
class CustomerModel (
    var status: String,
    var name: String,
    var breakfast: Map
    var lunch: Map
    var dinner: Map

Мне нужен только один (1) класс карты?

1 Ответ

1 голос
/ 25 апреля 2020

Модель клиента:

@Keep
@Parcelize
class CustomerModel (
   var status: String,
   var name: String,
   var breakfast: Map
 ) : Parcelable

Модель карты:

@Keep
@Parcelize
class Map (
   var meal: String,
   var coffee: Boolean,
   var guest: Int
) : Parcelable

onBindViewHolder правильно, но:

holder.status.text = model.status
holder.name.text = model.name
holder.meal.text = model.breakfast.meal 
holder.coffee.text = model.breakfast.coffee.toString() // must be string
holder.guest.text = model.breakfast.guest.toString() // must be string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...