Как отобразить другой вид, когда RecyclerView пуст в Kotlin? - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу отобразить информацию о том, что в RecyclerView нет элементов, но я не могу проверить, пуста ли коллекция Firestore. Как установить своего рода слушателя, который проверяет, есть ли в RecyclerView элементы или нет?

1 Ответ

0 голосов
/ 09 ноября 2019

Я предполагаю, что вы используете Firebase UI (в противном случае у вас уже был бы обратный вызов запроса). В вашем FirestoreRecyclerAdapter вы можете переопределить onDataChanged & onError :

typealias DataChangedListener = (count: Int) -> Unit
typealias ErrorListener = (error: FirebaseFirestoreException) -> Unit

class MyAdapter(
    options: FirestoreRecyclerOptions<MyModel>,
    private val onDataChangedListener: DataChangedListener = {},
    private val onErrorListener: ErrorListener = {}
) : FirestoreRecyclerAdapter<MyModel, MyViewHolder>(options) {

    ...

    // Notify Activity/Fragment/ViewModel
    override fun onDataChanged() = 
        onDataChangedListener.invoke(itemCount)

    // Notify Activity/Fragment/ViewModel
    override fun onError(e: FirebaseFirestoreException) = 
        onErrorListener.invoke(e)

}

Вы можете использовать его следующим образом:

recyclerView.adapter = MyAdapter(
            options,
            { count -> showHideNoData(count > 0) },
            { error -> showError(error) }
        )

...

fun showHideNoData(haveData: Boolean) { 
    recyclerView.isVisible = haveData
    noDataView.isVisible = !haveData
    errorView.isVisible = false
}

fun showError(error: FirebaseFirestoreException) {
    recyclerView.isVisible = false
    noDataView.isVisible = false
    errorView.isVisible = true
    // Logging & other UI changes
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...