RecyclerView仅在按下图标后显示

问题描述 投票:0回答:2

[当我参加应该具有RecyclerView的活动时,它不会立即显示ReyclerView。由于某些原因,它仅在我按下SearchView图标后才显示RecyclerView。

After I press the search iconBefore I press the search icon。这是我的RecyclerView适配器:

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

    override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
        super.onAttachedToRecyclerView(recyclerView)
        var con = recyclerView.context
    }


     var items: List<BlogPost> = ArrayList()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        return BlogViewHolder(
            LayoutInflater.from(parent.context).inflate(R.layout.user_row, parent, false)
            )
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when(holder) {

            is BlogViewHolder ->{
                holder.bind(items.get(position))
            }
        }
    }


    override fun getItemCount(): Int {
        return items.size
    }

    fun submitList(blogList: List<BlogPost>){
        items = blogList
    }

    class BlogViewHolder constructor(
        itemView: View
    ): RecyclerView.ViewHolder(itemView){
        val phoneButton = itemView.phoneButton
        val locationButton = itemView.locationButton
        val nameButton = itemView.nameButton

        fun bind(blogPost: BlogPost){

            //שם
            nameButton.setText(blogPost.name)

            //אפטר
            if(blogPost.place=="after"){
                locationButton.setBackgroundColor(Color.parseColor("#F03434"))
                locationButton.setText("אפטר")
            }
    }
}

这是应该显示RecyclerView的活动,还包含搜索栏:

class Tavla : AppCompatActivity() {

    private lateinit var blogAdapter: BlogRecyclerAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_tavla)

        initRecycelrView()
        addDataset()

    }

   //The method which the search button calls
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.main_menu, menu)
       val item = menu!!.findItem(R.id.action_search)
        val searchView = item.actionView as androidx.appcompat.widget.SearchView
        return super.onCreateOptionsMenu(menu)
    }

    private fun addDataset(){
        val data = DataSource.createDataSet()
        blogAdapter.submitList(data)
    }

    private fun initRecycelrView(){
        recyclerView.apply {
            recyclerView.layoutManager = LinearLayoutManager(this@Tavla)
            val topSpacingDecoration = TopSpacingItemDecoration(30)
            addItemDecoration(topSpacingDecoration)
            blogAdapter = BlogRecyclerAdapter()
            adapter = blogAdapter
        }
    }
}

我从“数据源”获得列表

android kotlin android-recyclerview adapter recycler-adapter
2个回答
0
投票

尝试在blogAdapter.notifyDataSetChanged()中的addDataset()下添加onCreate

以便它会通知适配器在活动加载时数据已更改。


0
投票

将其粘贴到oncreate方法中。

addDataset()initRecycelrView()

© www.soinside.com 2019 - 2024. All rights reserved.