Не удается заполнить переработчик с помощью коллекции - PullRequest
0 голосов
/ 22 сентября 2019

Я хочу, чтобы в каждой строке моего RecyclerView отображались все детали одного документа коллекции.

Я использовал этот точно такой же код адаптера, хотя и с другим классом для сериализации.И это хорошо работает.Но в данном случае это просто не работает.Но код просто не заполняет представления.

Моя база данных выглядит так:

reviews--Orange--vault--|
                        |-firstReview
                        |-secondReview
                        |-sjdeifhaih5aseoi
                         ...

Мой запрос и адаптер из фрагмента:

override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)

        viewModel = ViewModelProviders.of(this).get(ReviewViewModel::class.java)

        val reviewQuery = FirebaseFirestore.getInstance().collection("reviews").document("Orange").collection("vault")
        val reviewBurnOptions = FirestoreRecyclerOptions.Builder<Review>()
            .setQuery(reviewQuery, object : SnapshotParser<Review> {
                override fun parseSnapshot(snapshot: DocumentSnapshot): Review {
                    return snapshot.toObject(Review::class.java)!!.also {
                        it.id = snapshot.id
                    }
                }
            }).setLifecycleOwner(this)

        reviewRecycler.adapter=ReviewBurnAdapter(reviewBurnOptions.build())}

    class ReviewBurnAdapter(options: FirestoreRecyclerOptions<Review>) :
        FirestoreRecyclerAdapter<Review, ReviewBurnAdapter.ViewHolder>(options) {

        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {//I never reach this point
            val view = LayoutInflater.from(parent.context).inflate(R.layout.row_review, parent, false)
            return ViewHolder(view)
        }

        override fun onBindViewHolder(holder: ViewHolder, position: Int, item: Review) {
            holder.apply {
                holder.itemView.rowAuthor.text = item.author
            }
        }


        inner class ViewHolder(override val containerView: View) :
            RecyclerView.ViewHolder(containerView), LayoutContainer
    }

Класс для сериализации в:

import com.google.firebase.firestore.Exclude
import com.google.firebase.firestore.PropertyName
import java.util.*

class Review(
    @get:Exclude var id: String = "DEVIL",

    @JvmField @PropertyName(AUTHOR) var author: String = "",
    @JvmField @PropertyName(WRITEUP) var writeup: String = "",
    //@JvmField @PropertyName(MOMENT) var moment:Date=Date(1997,12,1),
    @JvmField @PropertyName(RATING) var rating: Int = 0
) {
    companion object {
        const val AUTHOR = "author"
        const val WRITEUP = "writeup"
        const val RATING = "rating"
        //const val MOMENT="moment"
    }
}

Также нет ошибок, он просто не достигает кода, который генерирует и заполняет viewHolders.

1 Ответ

1 голос
/ 22 сентября 2019

Хорошо, исправление было очень простым, как заметил @Prashant Jha, я не указал менеджер макета для своего RecyclerView -_-

Чтобы быть кристально чистым, я добавил app: layoutManager = "androidx.recyclerview.widget.LinearLayoutManager "

к моему xml, и все заработало.

...