博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 通用Dialog中设置RecyclerView
阅读量:4879 次
发布时间:2019-06-11

本文共 7093 字,大约阅读时间需要 23 分钟。

通用Dialog

public class IOSRecyclerViewDialog{    private Context context;    private Dialog dialog;    private LinearLayout lLayout_bg;    private TextView txt_title;    private TextView txt_msg;    private Button btn_neg;    private Button btn_pos;    //private ImageView img_line;    private Display display;    private boolean showTitle = false;    private boolean showMsg = false;    private boolean showPosBtn = false;    private boolean showNegBtn = false;    private View view;    private FrameLayout frameLayout;    public IOSRecyclerViewDialog(Context context) {        this.context = context;        WindowManager windowManager = (WindowManager) context                .getSystemService(Context.WINDOW_SERVICE);        display = windowManager.getDefaultDisplay();    }    public IOSRecyclerViewDialog builder() {        view = LayoutInflater.from(context).inflate(R.layout.dialog_recycler_view, null);        lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);        txt_title = (TextView) view.findViewById(R.id.txt_title);        txt_title.setVisibility(View.GONE);        txt_msg = (TextView) view.findViewById(R.id.txt_msg);        txt_msg.setVisibility(View.GONE);        btn_neg = (Button) view.findViewById(R.id.btn_neg);        btn_neg.setVisibility(View.GONE);        btn_pos = (Button) view.findViewById(R.id.btn_pos);        btn_pos.setVisibility(View.GONE);        frameLayout = (FrameLayout) view.findViewById(R.id.customPanel);        // ????Dialog????????        dialog = new Dialog(context, R.style.AlertDialogStyle);        dialog.setContentView(view);        dialog.setCancelable(false);        // ????dialog????????        lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display                .getWidth() * 0.85), LayoutParams.WRAP_CONTENT));        return this;    }    public IOSRecyclerViewDialog setCustomView(View v, LayoutParams params){        if (frameLayout.getChildCount() > 0)            frameLayout.removeAllViews();        txt_msg.setVisibility(View.GONE);        frameLayout.addView(v, params);        return this;    }    public IOSRecyclerViewDialog setTitle(String title) {        showTitle = true;        if ("".equals(title)) {            txt_title.setText("????");        } else {            txt_title.setText(title);        }        return this;    }    public IOSRecyclerViewDialog setMsg(String msg) {        frameLayout.setVisibility(View.GONE);        showMsg = true;        if ("".equals(msg)) {            txt_msg.setText("????");        } else {            txt_msg.setText(msg);        }        return this;    }    public IOSRecyclerViewDialog setCancelable(boolean cancel) {        dialog.setCancelable(cancel);        return this;    }    public IOSRecyclerViewDialog setCanceledOnTouchOutside(boolean cancel) {        dialog.setCanceledOnTouchOutside(cancel);        return this;    }    public IOSRecyclerViewDialog setPositiveButton(String text,                                       final View.OnClickListener listener) {        showPosBtn = true;        if ("".equals(text)) {            btn_pos.setText("???");        } else {            btn_pos.setText(text);        }        btn_pos.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (listener != null)                    listener.onClick(v);                dialog.dismiss();            }        });        return this;    }    public IOSRecyclerViewDialog setNegativeButton(String text,                                       final View.OnClickListener listener) {        showNegBtn = true;        if ("".equals(text)) {            btn_neg.setText("???");        } else {            btn_neg.setText(text);        }        btn_neg.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (listener != null)                    listener.onClick(v);                dialog.dismiss();            }        });        return this;    }    private void setLayout() {        if (!showTitle && !showMsg) {            txt_title.setText("???");            txt_title.setVisibility(View.VISIBLE);        }        if (showTitle) {            txt_title.setVisibility(View.VISIBLE);        }        if (!showPosBtn && !showNegBtn) {            btn_pos.setText("???");            btn_pos.setVisibility(View.VISIBLE);            //btn_pos.setBackgroundResource(R.drawable.alertdialog_single_selector);            btn_pos.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    dialog.dismiss();                }            });        }        if (showPosBtn && showNegBtn) {            btn_pos.setVisibility(View.VISIBLE);            //btn_pos.setBackgroundResource(R.drawable.alertdialog_right_selector);            btn_neg.setVisibility(View.VISIBLE);            //btn_neg.setBackgroundResource(R.drawable.alertdialog_left_selector);            //img_line.setVisibility(View.VISIBLE);        }        if (showPosBtn && !showNegBtn) {            btn_pos.setVisibility(View.VISIBLE);            //btn_pos.setBackgroundResource(R.drawable.alertdialog_single_selector);        }        if (!showPosBtn && showNegBtn) {            btn_neg.setVisibility(View.VISIBLE);            //btn_neg.setBackgroundResource(R.drawable.alertdialog_single_selector);        }    }    public void show() {        setLayout();        dialog.show();    }}

其中用到的资源文件 dialog_recycler_view.xml

使用

RecyclerView recyclerView = new RecyclerView(this);    recyclerView.setLayoutManager(new LinearLayoutManager(this));    recyclerView.setHasFixedSize(true);    recyclerView.setAdapter(homeAdapter);    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,            homeAdapter.getItemCount() * Utils.getHeightInPx(this)/12);    new IOSRecyclerViewDialog(this).builder()            .setCancelable(false)            .setCanceledOnTouchOutside(false)            .setCustomView(recyclerView, lp)            .setTitle(selectedBrand.getName())            .setPositiveButton(getString(R.string.add_attention), v ->                            presenter.saveData()            ).setNegativeButton(getString(R.string.cancle), v -> {                presenter.getSelectedData().clear();                presenter.getSelectedData().addAll(originalAllSelected);                presenter.saveData();            })            .show();

 

转载于:https://www.cnblogs.com/zhujiabin/p/7562220.html

你可能感兴趣的文章
软件工程师就业前景
查看>>
asp.net成员管理系统membership详解教程(一)
查看>>
情态动词
查看>>
关于linux的一些基础知识
查看>>
架构漫谈阅读感悟一
查看>>
Android系列之网络(二)----HTTP请求头与响应头
查看>>
数据结构之表(1)顺序表的实现
查看>>
5. git 过滤,让某文件夹里无法提交新添加的文件
查看>>
使用python脚本的3D引擎Panda3d
查看>>
「成长指南」大佬是怎样炼成的
查看>>
CentOS VMware 下SSH配置方法详解
查看>>
【DNN 系列】 添加模块后不显示
查看>>
Java Spring MVC 错误 及 常见问题 总结
查看>>
记一个数据库游标的实例
查看>>
netcore2.0 ORM框架中如何配置自定义的主外键加载
查看>>
基础练习 十进制转十六进制
查看>>
156 合并区间
查看>>
C# Base64加密解密
查看>>
HDU 1255 覆盖的面积 线段树+扫描线
查看>>
关联映射 ---- Hibernate之多对多关系
查看>>