如何在回收器视图Android中最大程度地识别哪种布局在顶部加载



我在一个循环系统中工作,其中包括三种不同的布局。我使用getItemViewType()为三个布局编码了一个常见的适配器,并且我的recyclerview效果很好。现在,我想以粘性标头显示布局标题(无论是1还是2)。

我在framelayout下添加了一个文本视图,以充当粘性。

在我的适配器中,我将静态字符串值设置为"布局一个"或getItemViewType方法中的"一个"或"布局两个",以从活动中获取值。

public static String title_sticky="";
  @Override
    public int getItemViewType(int position) {
        if (items.get(position) instanceof Movie) {
            title_sticky="LAYOUT ONE";
            return MOVIE;
        } else if (items.get(position) instanceof Movie1) {
            title_sticky="LAYOUT TWO";
            return MOVIE1;
        }/*else if (items.get(position) instanceof Blockbuster ) {
            return BLOCKBUSTER ;
        }*/
        return -1;
    }

现在在活动中,

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                stickyText.setText(ComplexRecyclerViewAdapter.title_sticky);
            }
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                    stickyText.setText(ComplexRecyclerViewAdapter.title_sticky);
            }
        });
On addOnscrollListener and onScrolled method of recyclerview, i am just getting the stickystring value from Adapter and setting it to StickyHeaderText.

现在,我的问题是,每当第二个布局的第一个项目在滚动时在我的回收瓶的底部可见时,stickytitle就会更改为"布局两个"。

如何在回收器视图中最大的位置识别哪个布局在顶部加载,以便我可以根据该范围填充我的粘性标题值。

谢谢

您可以获取第一个可见项目的位置:

int firstVisibleItem = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstCompletelyVisibleItemPosition();

现在,使用您的getItemViewType方法检索它的类型,或实现一种方法,该方法像您为类型

那样检索布局标识符

以获取可以使用的最高位置的视图:

View view =((LinearLayoutManager)recyclerView.getLayoutManager()).findViewByPosition(firstVisibleItem);

相关内容

最新更新