如果使用嵌套的recyclerView,如何从适配器的第1个位置从recyclerView的arraylist加载第0个数据?

问题描述

我正在开发一个需要在recyclerView内部显示recyclerView的应用程序。 现在,recyclerView内部的recyclerView是基于条件的。如果我们那里有innerRecyclerView的数据,则只需要显示它,否则就不需要显示它。

这里我面临的问题如下:
在第一位置,我已经准备好显示/隐藏内部recyclerView的条件, 然后在休息状态下,主recyclerView会正确加载数据。

现在在recyclerView的第0位置,如果我在其中显示innerRecyclerView,则它们在外部recyclerView的第1位置将加载ArrayList的第1位置的数据,而它应从ArrayList的第0位置开始。 因此,这里跳过了ArrayList的第0个数据,并从recyclerView的第1个位置加载了数据。

有什么方法可以从ArrayList的recyclerView的第1个位置加载第0个数据吗?

代码的逻辑如下:

@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder,final int position) {
    if (viewHolder instanceof HomeViewHolder) {
        if(position == 0} {
            // Data for the innerRecyclerView is available:
            if(recentList.size() > 0 ) {
                // Show innerRecyclerView..
                // Load data for the inner recyclerview.
            } else {
                // Hide the inner recyclerView..
            }
        } else {
            // Load the data for the outer recyclerView with the rest of the position..
            // If we are showing the innerRecyclerView then it will start only loading the data from the position 1 from the array list..
        }
    }
}

请考虑以下屏幕设计:

enter image description here

如果您对此问题有任何疑问,请告诉我。

解决方法

因此,由于只需要在第0个位置显示innerRecyclerview。为什么不只将innerRecyclerview移出externalRecyclerview?

当将innerRecylcerview堆栈放在outterRecylerview顶部时。您可以这样做:

让我们叫outterlist = mainList,而innerList = horizo​​ntalList

例如,您有一个mainList填充了externalRecyclerview。现在 您需要做的就是

if(!mainList.isEmpty()){
   if(MainList.get(0) == "the condition"){
 // show the horizontal recylcerview stuff.
   } else { // hide the horizontal recyclerview }
}
// continue on to setup the mainRecylerview

这将帮助您避免混乱的代码。