popupwindow弹出二级联动

先给要弹出 popupwindow 的控件写 点击事件
我这里是 popSearch。

	popSearch.setOnClickListener(new View.OnClickListener() {
	            @Override
	            public void onClick(View v) {
	                showPopupWindow(v);
	            }
	        });

下面开始正题:

private void showPopupWindow(View v) {

	//找到要弹出popupwindow的布局
    View view = LayoutInflater.from(context).inflate(R.layout.pop_layout, null);

	//new 出来 popupwindow 设置宽高
    final PopupWindow popupWindow = new PopupWindow(view, 900, ActionBar.LayoutParams.WRAP_CONTENT, true);

	//加上背景颜色
    popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));

    //设置外面可触
    popupWindow.setOutsideTouchable(true);
    //设置可触
    popupWindow.setTouchable(true);
    //显示在底部
    popupWindow.showAsDropDown(v);

	//初始化recycle人view
    left_View1 = view.findViewById(R.id.left_View1);
    right_View1 = view.findViewById(R.id.right_View1);

	//给recycle人view设置排列方式
    left_View1.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    leftAdapter = new LeftAdapter(this);
    left_View1.setAdapter(leftAdapter);
    leftAdapter.notifyDataSetChanged();
    mainPresenter.leftData(firstCategoryId);


    right_View1.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
    rightAdapter = new RightAdapter(this);
    right_View1.setAdapter(rightAdapter);
    rightAdapter.notifyDataSetChanged();
    mainPresenter.rightData(categoryId , page , count);

}

在成功的方法里写数据展示 + 点击联动(当然要在adapter里写接口回调)

首先 接口回调(传一个i,或者position):

    public interface CallBackClick{
        void onclick(int i);
    }

    private CallBackClick mcallBackClick;

    public void setOnClickLinstener(CallBackClick mcallBackClick){
        this.mcallBackClick = mcallBackClick;
    }
    
	//在onBindViewHolder方法里写一下
	viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mcallBackClick.onclick(i);
        }
    });

成功的方法里数据展示

	//左边的成功方法+点击事件
    @Override
    public void leftSuccess(final LeftBean leftBean) {
        leftAdapter.setList(leftBean.getResult());
        leftAdapter.setOnClickLinstener(new LeftAdapter.CallBackClick() {
            @Override
            public void onclick(int i) {
                id = leftBean.getResult().get(i).getId();  //这个id是自己定义的 提成全局了 :String id;
                mainPresenter.rightData(id, page, count);
            }
        });
    }

	//右边的成功方法
    @Override
    public void rightSuccess(RightBean rightBean) {
        rightAdapter.setList(rightBean.getResult());
    }

在第二个adapter里面清空一下数据(点击左边按钮就清空一下右边集合重新加载对应的数据)

public void setList(List arr) {
            if (list.size() != 0){
                list.clear();
                list.addAll(arr);
                notifyDataSetChanged();
            }else {
                list.addAll(arr);
                notifyDataSetChanged();
            }
    }

你可能感兴趣的:(popupwindow弹出二级联动)