RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框(文末附源码)

                                                    无图无真相,一言不合就上图:

  

  •   功能简介:下拉显示时间列表,点击时间弹出自定义的IOS对话框,然后选择对应的车牌号,跳转到第二个界面。

        本以为是个很简单的东西,写了之后才发现坑不断,特此纪念下。(里面用的都是假数据,如需请求网络数据不止如何修改的可以联系我qq:2872960735)    代码有点长,麻烦看官慢慢看,接下来让我们开心的撸码吧!                  

1、好了,因为这个东西还是比较大的,所以这边就不贴出全部布局,需要的可以去下载我的源码,首先我们先编写IOSDialog.class:

package com.lenz.arouter.recyclerviewtesttwo.dialog;
import android.app.Dialog;
import android.content.Context;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.lenz.arouter.recyclerviewtesttwo.R;
import com.lenz.arouter.recyclerviewtesttwo.adapter.DialogAdapter;
import java.util.ArrayList;
import java.util.List;

/**
 * Author: LJW
 * Date: 2019-07-18 9:42
 * Description: 自定义仿iOS对话框
 */
public class IosDialog {
    private Context context;
    private Dialog dialog;
    private LinearLayout lLayout_bg;
    private TextView txt_title;
    private TextView btn_neg;
    private TextView btn_pos;
    private View img_line;
    private Display display;
    private boolean showTitle = false;
    private boolean showPosBtn = false;
    private boolean showNegBtn = false;
    private RecyclerView mRecyclerView;
    public IosDialog(Context context) {
        this.context = context;
        WindowManager windowManager = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        display = windowManager.getDefaultDisplay();
    }

    public IosDialog builder() {
        View view = LayoutInflater.from(context).inflate(
                R.layout.dialog_check_main, null);
        lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);//整个布局
        txt_title = (TextView) view.findViewById(R.id.txt_title);//标题
        txt_title.setVisibility(View.GONE);
        btn_neg = (TextView) view.findViewById(R.id.btn_neg);//取消按钮
        btn_neg.setVisibility(View.GONE);
        btn_pos = (TextView) view.findViewById(R.id.btn_pos);//确定按钮
        btn_pos.setVisibility(View.GONE);
        img_line = (View) view.findViewById(R.id.img_line);
        img_line.setVisibility(View.GONE);
        mRecyclerView = view.findViewById(R.id.rlv_car_number);
        dialog = new Dialog(context, R.style.AlertDialogStyle);
        dialog.setContentView(view);

        lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display
                .getWidth() * 0.80), ViewGroup.LayoutParams.WRAP_CONTENT));

        return this;
    }

    public IosDialog setRecyclerView(List<String> tripsBeans) {
        List<String> list = new ArrayList<>();
        DialogAdapter checkMainInsideAdapter = new DialogAdapter(tripsBeans, context);
        mRecyclerView.setLayoutManager(new GridLayoutManager(context, 2));
        mRecyclerView.setAdapter(checkMainInsideAdapter);
        return this;
    }

    public IosDialog setTitle(String title) {
        showTitle = true;
        if ("".equals(title)) {
            txt_title.setText("请选择车牌号");
        } else {
            txt_title.setText(title);
        }
        return this;
    }


    public IosDialog setCancelable(boolean cancel) {
        dialog.setCancelable(cancel);
        return this;
    }

    public IosDialog 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) {
                listener.onClick(v);
                dialog.dismiss();
            }
        });
        return this;
    }

    public IosDialog 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) {
                listener.onClick(v);
                dialog.dismiss();
            }
        });
        return this;
    }

    //控制要显示啥
    private void setLayout() {
        if (showTitle) {
            txt_title.setVisibility(View.VISIBLE);
        }
        if (!showPosBtn && !showNegBtn) {
            btn_pos.setText("确定");
            btn_pos.setVisibility(View.VISIBLE);
            btn_pos.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });
        }

        if (showPosBtn && showNegBtn) {
            btn_pos.setVisibility(View.VISIBLE);
            btn_neg.setVisibility(View.VISIBLE);
            img_line.setVisibility(View.VISIBLE);
        }

        if (showPosBtn && !showNegBtn) {
            btn_pos.setVisibility(View.VISIBLE);
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值