天天看点

Recyclerview分组悬停

final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        RelistAdapter adapter = new RelistAdapter();

        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(adapter);

//        recyclerView的滚动监听
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            //        recyclerView的滚动状态
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
//                Log.e("高==", ll_top.getHeight() + "");
                记录控件的高
//                height = ll_top.getHeight();
            }

            @Override
            //        recyclerView的滚动中执行
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                查找当前试图的位置
//                View view = linearLayoutManager.findViewByPosition(currentPosition + 1);
//                if (view == null) return;
                view.getTop当前顶部的高,小于等于当前试图的高
//                if (view.getTop() <= height) {
//                    Log.e("view.getTop()==", view.getTop() + "");
//                    ll_top.setY(-(height - view.getTop()));
//                } else {
//                    ll_top.setY(0);
//                }

//                    如果当前视图不等于当前的位置
//                    linearLayoutManager.findFirstVisibleItemPosition()当前显示在顶部的试图的索引
                Log.e("当前试图的位置==", linearLayoutManager.findFirstVisibleItemPosition() + "");
//                判断当前分组显示的组名称不是
                if (currentPosition != linearLayoutManager.findFirstVisibleItemPosition()) {
                    currentPosition = linearLayoutManager.findFirstVisibleItemPosition();
//                    ll_top.setY(0);
                    tv_top.setText(" " + currentPosition);
                }
            }
        });

    }

    private void initView() {
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        tv_top = (TextView) findViewById(R.id.tv_top);
        top_divider = (View) findViewById(R.id.top_divider);
        ll_top = (LinearLayout) findViewById(R.id.ll_top);
    }
// 一下为适配器

    class RelistAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {


        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
            return new ReHolder(view);
        }

        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        }

        @Override
        public int getItemCount() {
            return 10;
        }

        class ReHolder extends RecyclerView.ViewHolder {

            public ReHolder(View itemView) {
                super(itemView);

            }
        }