【问题标题】:How do i refresh RecyclerView with SwipeRefreshLayout如何使用 SwipeRefreshLayout 刷新 RecyclerView
【发布时间】:2021-04-17 17:01:32
【问题描述】:

我想刷新我的回收站视图,我通过 viewModel 接收我的数据并将其传递给我的适配器 所以我不知道如何清除这些数据并再次调用它

主活动:

class MainActivity : AppCompatActivity() {
private val viewModel: ContatoViewModel = ContatoViewModel()

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

    configuraObserver()
    
    viewModel.search()
}

private fun configuraObserver() {
    viewModel.contato.observe(this, { data ->
        Log.i("API", "Data received")
        contato_recyclerview.apply {
            layoutManager = LinearLayoutManager(this.context, LinearLayoutManager.VERTICAL, false)
            adapter = ContatoAdapter(this.context, data.conteudoResposta)
        }
    })
}

我的适配器:

class ContatoAdapter(private val context: Context?, private val contatos : List<Contato>) : RecyclerView.Adapter<RecyclerView.ViewHolder>(){

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
    val view = LayoutInflater.from(context).inflate(R.layout.list_item_contato,parent, false)
    return ContatoViewHolder(view)
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    holder as ContatoViewHolder
    val contato = contatos.elementAt(position)
    holder.bindView(contato)

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

【问题讨论】:

  • 在你的课堂上没有滑动刷新布局。是要添加还是共享了不完整的代码?
  • 抱歉回复晚了,是的,我的 xml 文件中有。已经用适配器上的 notifyDataSetChanged() 解决了问题

标签: android android-layout android-recyclerview


【解决方案1】:

如果您只想在回收站视图中刷新您的数据(您已经收到),您只需从您的适配器调用notifyDataSetChanged()。

SwipeRefreshLayout 是当你想实现pull to refresh时需要的,也就是说你想在有人下拉屏幕时触发API调用,然后在收到数据后将它传递给Adapter和notifyDataSetChanged()

要实现拉刷新,您可以关注Google Doc

【讨论】:

  • 谢谢你,我会阅读这个谷歌文档,我需要从 api 刷新数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-16
  • 2018-09-24
  • 2014-09-30
  • 1970-01-01
相关资源
最近更新 更多