简体   繁体   English

Recyclerview 不显示项目 Kotlin

[英]Recyclerview not showing items Kotlin

My App is just shows an Empty Screen and RecyclerView is not showing anything or is not working but there are no compile time or run time errors.我的应用程序只是显示一个空屏幕,而RecyclerView没有显示任何内容或无法正常工作,但没有编译时或运行时错误。

It would be great help if I get an answer ... I have been making an app that uses a RecyclerView but it's not showing any thing..why contents of the recycler view have not been showing up.my codes are bellow如果我得到答案,那将是很大的帮助......我一直在制作一个使用RecyclerView但它没有显示任何东西的应用程序......为什么没有显示回收器视图的内容。我的代码如下

Here is My FeedFragment, Adapter这是我的 FeedFragment,适配器

//Fragment

@AndroidEntryPoint
class FeedFragment : Fragment(R.layout.feed_fragment) {

    private var _binding: FeedFragmentBinding? = null
    private val binding get() = _binding!!
    private lateinit var feedAdapter: FeedAdapter
    private val viewModel: FeedViewModel by viewModels()

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        _binding = FeedFragmentBinding.inflate(inflater, container, false)
        val view = binding.root
        return view
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        setupRv()
        getCharacters()
    }

    private fun getCharacters() {
        viewModel.listData.observe(viewLifecycleOwner, Observer { pagingData ->
                feedAdapter.submitData(viewLifecycleOwner.lifecycle, pagingData)
        })
    }


    private fun setupRv() {
        feedAdapter = FeedAdapter()
        binding.feedRv.layoutManager =
            LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false)
        binding.feedRv.apply {
            adapter = feedAdapter
            setHasFixedSize(true)
            visibility = View.VISIBLE
        }
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
}

//PagingDataAdapter

class FeedAdapter : PagingDataAdapter<Characters,FeedAdapter.FeedViewHolder >(DiffCallback()) {

    inner class FeedViewHolder(private val binding: FeedFragmentRvBinding) :
            RecyclerView.ViewHolder(binding.root) {
                fun bind(characters: Characters) {
                    with(binding) {

                        Glide.with(itemView)
                            .load(characters.image)
                            .transition(DrawableTransitionOptions.withCrossFade())
                            .error(R.drawable.ic_launcher_background)
                            .into(feedRvImage)
                        feedRvName.text = characters.name
                        feedRvStatus.text = characters.status
                        feedRvSpecies.text = characters.species
                        feedRvGender.text = characters.gender

                        println(characters.name)


                    }
                }
            }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FeedViewHolder {
        val binding =
            FeedFragmentRvBinding.inflate(LayoutInflater.from(parent.context),parent,false)
        return FeedViewHolder(binding)
    }


    override fun onBindViewHolder(holder: FeedViewHolder, position: Int) {

        getItem(position)?.let { holder.bind(it) }
    }


    class DiffCallback : DiffUtil.ItemCallback<Characters>() {
        override fun areItemsTheSame(oldItem: Characters, newItem: Characters): Boolean {
            return oldItem.id == newItem.id
        }

        override fun areContentsTheSame(oldItem: Characters, newItem: Characters): Boolean {
            return oldItem == newItem
        }
    }
}

// retrofit response // 改造响应

改造响应

Update your CharacterResponse model class to parse data accordingly.更新您的CharacterResponse模型类以相应地解析数据。

data class CharacterResponse(
    val info: Info,
    val results: List<Characters>
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM