android 控件 简单的分层筛选控件

之前用过expandableListView,这里使用自定义控件实现,效果:
android 控件 简单的分层筛选控件_第1张图片
整个项目的布局是这样的:
android 控件 简单的分层筛选控件_第2张图片
最上方的4个筛选用的是用toggleButton填充的,toggleButton之前也有简单的介绍过:ToggleButton的简单介绍
下面是一个popupwindow,之前会给toggleButton设置一个tag,这样后期点击的时候可以根据这个tag来控制popupwindow的显示内容。同时定义一个接口来设置最终toggleButton的显示。

// 子项的点击回调事件
    public interface IOnChildClick {
        void OnitemClick(int position);//条目的点击事件
        void onBottomClick();//全部按钮的点击事件
    }

相应的接口实现:

@Override
    public void OnitemClick(int position) {
        if(mSelectToggleBtn!=null){
                int selectBtnIndex = (Integer) mSelectToggleBtn.getTag();
                MyExpandableListViewItem item=(MyExpandableListViewItem) (((RelativeLayout) mPopViews.get(selectBtnIndex)).getChildAt(0));//也只有一个控件

                mSelectToggleBtn.setText(item.getmGridviewDatas().get(position));

        }

    }

    @Override
    public void onBottomClick() {
        hidePopWindow();//隐藏popupwindow
        //回复之前的,大学,班级等等
            if(mSelectToggleBtn!=null){
                int selectBtnIndex = (Integer) mSelectToggleBtn.getTag();
            mSelectToggleBtn.setText(((MyExpandableListViewItem) (((RelativeLayout) mPopViews.get(selectBtnIndex)).getChildAt(0)))
                    .getmTitle());
        }

    }

子项的添加,本身是一个gridview:

        setBackgroundColor(Color.WHITE);
        LayoutInflater.from(getContext()).inflate(R.layout.myexspandleview_item, this, true);
        setOrientation(LinearLayout.VERTICAL);
        mGridview = (GridView) findViewById(R.id.gridview);
        mButton = (Button) findViewById(R.id.allBtn);
        if(mGridview!=null){
            mAdapter=new MyBaseAdapter(mGridviewDatas, context);
            mGridview.setAdapter(mAdapter);
        }

筛选的显示和隐藏:

    //显示筛选结果
    private  void showPopupWindow() {
        if (null == mPopupWindow) {
            mPopupWindow = new PopupWindow(mPopViews.get((Integer) mSelectToggleBtn.getTag()), mDisplayWidth,
                    mDisplayHeight);
            /** 监听popupWindow的收缩,并重置字体颜色 */
            mPopupWindow.setOnDismissListener(new OnDismissListener() {

                @Override
                public void onDismiss() {
                    if (mSelectToggleBtn != null) {
                        mSelectToggleBtn.setTextColor(mNormalColor);
                        mSelectToggleBtn.setChecked(false);
                    }
                }
            });
            mPopupWindow.setAnimationStyle(R.style.PopupWindowAnimation);
            mPopupWindow.setFocusable(true);
            mPopupWindow.setOutsideTouchable(true);

        } else {
            mPopupWindow.setContentView(mPopViews.get((Integer) mSelectToggleBtn.getTag()));
        }
        /** 显示的时候,设为选中颜色 */
        mSelectToggleBtn.setTextColor(mSelectorTextColor);
        mPopupWindow.showAsDropDown(mToggleButtons.get(0), 0, 0);


    }
    //隐藏筛选
    private void hidePopWindow(){
        if(mPopupWindow!=null){
            mPopupWindow.dismiss();
        }
        //显示默认颜色
        if(mSelectToggleBtn!=null){
            mSelectToggleBtn.setTextColor(mNormalColor);
            mSelectToggleBtn.setChecked(false);
        }
    }

你可能感兴趣的:(Android)