onBindViewHolder не вызывается при использовании привязки данных к RecyclerView - PullRequest
0 голосов
/ 23 июня 2019

onBindViewHolder не вызывается при использовании привязки данных в Recyclerview.Итак, Activity показывает пустой белый экран.

Когда я вижу на logcat, размер списка и itemCount равен 20, но метод onBindViewHolder никогда не вызывается.

class NewsAdapter : RecyclerView.Adapter<NewsAdapter.ViewHolder>() {

    private val listArticle = mutableListOf<Article>()

    fun update(list: List<Article>) {
        listArticle.addAll(list)
        notifyDataSetChanged()
    }

    override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): NewsAdapter.ViewHolder {
        return ViewHolder(viewGroup)
    }

    class ViewHolder(
            private val parent: ViewGroup,
            private val binding: AdapterNewsBinding = DataBindingUtil.inflate(
                    LayoutInflater.from(parent.context),
                    R.layout.adapter_news,
                    parent,
                    false
            )
    ) : RecyclerView.ViewHolder(binding.root) {
        fun bind(article: Article) {
            binding.article = article
        }
    }

    override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
        Log.d("NewsAdapter", "onBindViewHolder")
        viewHolder.bind(listArticle[position])
    }

    override fun getItemCount() = listArticle.size
}

Как вызвать onBindViewHolder в Recyclerview с помощьюпривязка данных?Так что я могу показать данные о деятельности.

1 Ответ

0 голосов
/ 23 июня 2019

решаемые

  1. добавить плагин применения: 'kotlin-kapt' в вашем приложении gradle
  2. Итак, вы можете сделать статический метод на адаптере таким же образом
companion object {
        @BindingAdapter("items")
        @JvmStatic
        fun RecyclerView.bindItems(items: List<Article>?) {
            val adapter = adapter as NewsAdapter
            if (!items.isNullOrEmpty()) adapter.update(items)
        }
    }

Готово

...