天天看點

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);

            }
        }