自定义样式,显示recyclerview的下拉选择框

此文章参考:https://www.cnblogs.com/zhujiabin/p/6236090.html
对原来的listview 替换成了 新的 recyclerview 

SpinerPopWindow.java

public class SpinerPopWindow<T> extends PopupWindow {
    private LayoutInflater inflater;
    private RecyclerView mListView;
    private List<Map<String,Object>> list;
    private DeductionTypeListAdapter mAdapter;
    private Context context;
    private View.OnClickListener onClickListener;
    private TextView tvName;
    private SpinerPopWindow spinerPopWindow;

    public SpinerPopWindow(Context context, List<Map<String,Object>> list, TextView tvName) {
        super(context);
        this.context=context;
        inflater=LayoutInflater.from(context);
        this.list=list;
        this.tvName=tvName;

        init();
    }

    public void setSpinerPopWindow(SpinerPopWindow spinerPopWindow){
        this.spinerPopWindow=spinerPopWindow;
    }

    private void init(){
        View view = inflater.inflate(R.layout.spiner_deductiontype, null);
        setContentView(view);
        setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
        setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
        setFocusable(true);
        ColorDrawable dw = new ColorDrawable(0x00);
        setBackgroundDrawable(dw);
        mListView = (RecyclerView) view.findViewById(R.id.spiner_deductiontype_rc);
        mListView.setLayoutManager(new LinearLayoutManager(context,RecyclerView.VERTICAL,false));
        mListView.setAdapter(mAdapter=new DeductionTypeListAdapter(R.layout.item_deductiontype,list));
    }

    private class DeductionTypeListAdapter extends BaseQuickAdapter<Map<String,Object>, BaseViewHolder> {
        public DeductionTypeListAdapter(@LayoutRes int layoutResId, @Nullable List<Map<String,Object>> nameList) {
            super(layoutResId, nameList);
        }

        @Override
        protected void convert(@NotNull BaseViewHolder baseViewHolder, final Map<String,Object> item) {
            baseViewHolder.setText(R.id.item_deductiontype_tv_name, StringUtils.getNotNull(item.get("name")));
            baseViewHolder.getView(R.id.item_deductiontype_ll_whole).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    tvName.setText(StringUtils.getNotNull(item.get("name")));
                    spinerPopWindow.dismiss();
                }
            });
        }
    }
}

 

下面是具体用法:

mainactivity里面

private SpinerPopWindow<String> mSpinerPopWindow;

设置下拉框点击事件

rlSelectDeductionType.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mSpinerPopWindow.setWidth(rlSelectDeductionType.getWidth());
        mSpinerPopWindow.showAsDropDown(rlSelectDeductionType);
        imDeductionSelect.setImageResource(R.drawable.icon_up);//下拉点击后的样式
    }
});
Map<String,Object> map=new HashMap<>();
map.put("name","12313");
deductionList.add(map);
map.put("name","333");
deductionList.add(map);//随便搞一个集合加载数据用,具体需求自行添加

mSpinerPopWindow = new SpinerPopWindow<String>(this, deductionList,tvSelectDeductionType);//tvSelectDeductionType是你自己要显示选择后文字的textview
mSpinerPopWindow.setSpinerPopWindow(mSpinerPopWindow);
mSpinerPopWindow.setOnDismissListener(dismissListener);
/**
 * 监听popupwindow取消
 */
private PopupWindow.OnDismissListener dismissListener=new PopupWindow.OnDismissListener() {
    @Override
    public void onDismiss() {
        imDeductionSelect.setImageResource(R.drawable.icon_drop);//点击选择事件结束后 弹框消失 回复下拉样式
    }
};

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值