首页 > 解决方案 > 等待 ListAdapter 完成,以便我可以应用过滤器

问题描述

现在,我通过绑定获得了一些值来使用以下列表适配器填充 recyclerView:

private val otrosSubmitListAdapter = OtrosSubmitListAdapter()
[more code]
 binding.otrosRequestList.adapter = otrosSubmitListAdapter

问题是我想,当所有值都被绑定后,然后与其他一些值合并,我想在一个名为 DummyContent.ITEMS 的变量中进行合并,我稍后会放置一个新的 filterAdapter 并使用它我的 recyclerview 的适配器,如下所示:

    dataArray = DummyContent.ITEMS
    filter_adapter = MyFilterAdapter(this.activity, dataArray)
    recyclerView.adapter = filter_adapter

问题是我无法掌握等待的方法,因此 OtrosSubmitListAdapter() 已完成其所有内部绑定并且我可以正确获取其值,现在通过使用此代码 DummyContents 永远不会合并 OtrosSubmitListAdapter() 所需的值,所以只有它的其他值可以正确显示。

等待 OtrosSubmitListAdapter() 完成所有绑定并正确使用结果的可能方法是什么?

标签: androidandroid-jetpackandroid-listadapter

解决方案


在您的 OtrosSubmitListAdapter 中创建一个回调,如下所示:

public interface AdapterCallback {
    void itemsBound();
}

将其添加到您的活动中

public class MainActivity extends AppCompatActivity implements AdapterCallback

在初始化时将 AdapterCallback 的引用传递给 OtrosSubmitListAdapter

在您的适配器上

AdapterCallback adapterCallback;

public OtrosSubmitListAdapter(AdapterCallback adapterCallback){
    this.adapterCallback = adapterCallback;
}

@Override
public void onBindViewHolder(final OtrosSubmitListAdapter.MyViewHolder holder, final int position) {

    if (position == itemList.size() - 1){
        adapterCallback.itemsBound();
    }
}

关于你的活动

private val otrosSubmitListAdapter = OtrosSubmitListAdapter(this)

@Override
public void itemsBound() {
    //enter code here
}

有关适配器回调示例,请参见https://stackoverflow.com/a/32032990/11881779

编辑:如果我理解你的问题是错误的,请分享你的适配器和活动的代码


推荐阅读