android 自定义dialog弹出框,带单选多选下拉

效果:点击开始按钮弹出开始选择框,点击巡检方式弹出可单选的菜单,点击巡检人员弹出可多选的菜单


demo.gif

image.png

image.png

1,单选多选下拉采用dialog自定义view的方式
部分代码截图:
(1)点击开始巡检添加点击事件


image.png

(2)dialog自定义view引入下拉菜单的布局
image.png

创建dialog
image.png

(3)巡检方式单选下拉采用android spinner自带下拉

image.png

(4)巡检人员多选下拉采用插件,按照参考引入部分文件即可
参考地址

部分代码:

dialog_patrol_start.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 选择巡检方式 -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:layout_marginTop="20dip"
        android:background="@color/white">

        <TextView
            android:layout_width="@dimen/link_tv_left"
            android:layout_height="@dimen/link_rl_tv_h"
            android:layout_marginLeft="@dimen/link_rl_tv_left"
            android:gravity="fill_vertical"
            android:text="巡检方式"
            android:textColor="@color/c3"
            android:textSize="@dimen/title" />

        <Spinner
            android:id="@+id/spWay"
            android:layout_width="match_parent"
            android:layout_height="@dimen/link_rl_tv_h"
            android:layout_marginLeft="@dimen/link_rl_tv_h7"
            android:textSize="@dimen/table_body"
            android:gravity="fill_vertical"
            android:textColor="@color/project_word_color"
            android:background="@color/white" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:gravity="right">

            <ImageView
                android:layout_width="12dip"
                android:layout_height="16dip"
                android:layout_marginTop="12dip"
                android:layout_marginRight="15dip"
                android:gravity="fill_vertical"
                android:background="@drawable/sp_img_gray"
                />

        </LinearLayout>

        <View android:layout_alignBottom="@id/spWay"
            android:layout_width="match_parent"
            android:layout_height="@dimen/link_line_h"
            android:background="@color/gray_white"/>

    </RelativeLayout>

    <!-- 选择巡检人员 -->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"
        android:layout_marginBottom="20dip"
        android:background="@color/white">

        <TextView
            android:layout_width="@dimen/link_tv_left"
            android:layout_height="@dimen/link_rl_tv_h"
            android:layout_marginLeft="@dimen/link_rl_tv_left"
            android:gravity="fill_vertical"
            android:text="巡检人员"
            android:textColor="@color/c3"
            android:textSize="@dimen/title" />

       <!-- <Spinner
            android:id="@+id/spPerson"
            android:layout_width="match_parent"
            android:layout_height="@dimen/link_rl_tv_h"
            android:layout_marginLeft="@dimen/link_rl_tv_h7"
            android:textSize="@dimen/table_body"
            android:gravity="fill_vertical"
            android:textColor="@color/project_word_color"
            android:background="@color/white" />-->

        <!-- 列表弹出框(对话框样式【多选】) -->
        <com.andbase.util.spinner.SpinnerViewMultiDialog
            android:id="@+id/spPerson"
            android:layout_width="match_parent"
            android:layout_height="@dimen/link_rl_tv_h"
            android:layout_marginLeft="@dimen/link_rl_tv_h7"
            android:textSize="@dimen/table_body"
            android:gravity="fill_vertical"
            android:textColor="@color/project_word_color"
            android:background="@color/white" />

        <TextView
            android:id="@+id/tvShow"
            android:layout_below="@id/spPerson"
            android:layout_width="match_parent"
            android:layout_height="@dimen/link_rl_tv_h"
            android:layout_marginLeft="@dimen/link_rl_tv_h7"
            android:layout_marginTop="-40dip"
            android:gravity="fill_vertical" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:gravity="right">

            <ImageView
                android:layout_width="12dip"
                android:layout_height="16dip"
                android:layout_marginTop="12dip"
                android:layout_marginRight="15dip"
                android:gravity="fill_vertical"
                android:background="@drawable/sp_img_gray"/>

        </LinearLayout>

    </RelativeLayout>


    <View
        android:layout_width="match_parent"
        android:layout_height="1dip"
        android:background="@color/gray_white"/>

    <LinearLayout
        android:id="@+id/llBox"
        android:layout_width="match_parent"
        android:layout_height="50dip"
        android:background="@null">

        <Button
            android:id="@+id/btnCancel"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:text="取消" />

        <View
            android:layout_width="1dip"
            android:layout_height="match_parent"
            android:background="@color/gray_white"/>

        <Button
            android:id="@+id/btnOk"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@null"
            android:text="确定" />
    </LinearLayout>

</LinearLayout>

dialogView() 部分:

 /**
     * 开始巡检弹出菜单
     */
    private void dialogView() {
        View view1 = LayoutInflater.from(mContext).inflate(R.layout.dialog_patrol_start,null);
        //巡检方式
        spWay = (Spinner) view1.findViewById(R.id.spWay);
        adapterWay = new ArrayAdapter<>(mContext, android.R.layout.simple_dropdown_item_1line,way);
        spWay.setAdapter(adapterWay);
        spWay.setSelection(0, true);//让第一个数据项已经被选中
        //巡检人员
//        spPerson = (Spinner) view1.findViewById(R.id.spPerson);
        spPerson  = (SpinnerViewMultiDialog) view1.findViewById(R.id.spPerson);
        tvShow = (TextView) view1.findViewById(R.id.tvShow);
        mSpinnerPersonList = new ArrayList<SpinnearBean>();
        //模拟获取数据集合
        try{
            mSpinnerPersonList = parseJsonArray("spinners4.txt");
        }catch (Exception e) {
            e.printStackTrace();
        }
        //设置下拉菜单显示的列表项文本
        if (mSpinnerPersonList != null && mSpinnerPersonList.size() > 0){
            spPerson.setData(mSpinnerPersonList);//设置下拉菜单列表集合源
            spPerson.setHint("请选择巡检人员");
        }

        //下拉菜单列表的列表项的点击事件监听
//        spPerson.setOnSpinnerConfirmClickListener(new OnSpinnerConfirmClickListener() {
//            @Override
//            public void OnConfirmed(ArrayList<Boolean> selecteIndexList) {
//                StringBuffer str1 = new StringBuffer();
//                for(int i=0;i<selecteIndexList.size();i++){
//                    if(selecteIndexList.get(i)){//如果为true,则执行下面的代码
////                        str1.append(mSpinnerPersonList.get(i).getParaName() + ":" + mSpinnerPersonList.get(i).getParaValue());
//                        str1.append(mSpinnerPersonList.get(i).getParaName() + " " );
//                    }
//                }
//                tvShow.setVisibility(View.VISIBLE);
////                tvShow.setText(str1);
//
////                StringBuffer str = new StringBuffer();
////                for(int i=0;i<mSpinnerPersonList.size();i++){
////                    str.append(mSpinnerPersonList.get(i).getParaName() + ":" + mSpinnerPersonList.get(i).isSelectedState() + "\n");
////                }
////                tvShow.setText(tvShow.getText() + "=====================\n" + str);
//            }
//        });



//        SpinnerOption c = new SpinnerOption( "-1", "请选择巡检人员");
//        personList.add(c);
//        //设置Adapter
//        ArrayAdapter<SpinnerOption> townAdapter = new ArrayAdapter<SpinnerOption>(mContext,android.R.layout.simple_spinner_item, personList);
//        townAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//        spPerson.setAdapter(townAdapter);
        
        Button cancel = (Button) view1.findViewById(R.id.btnCancel);
        Button ok = (Button) view1.findViewById(R.id.btnOk);
        
        //创建Dialog
        final AlertDialog dialog = new AlertDialog.Builder(mContext)
                .create();
        dialog.setTitle("开始巡检");
        dialog.setCancelable(false);
        //设置自定义view
        dialog.setView(view1);
        dialog.show();

        //取消按钮监听点击事件
        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.dismiss();
            }
        });
        //确定按钮监听点击事件
        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

//                if (spPerson.getText().toString().equals("00000000"))
//                {
//                    Toast.makeText(mContext,"密码正确!",Toast.LENGTH_SHORT).show();
//                    dialog.dismiss();
//                }
//                else
//                {
//                    Toast.makeText(mContext,"密码错误,请重新输入!",Toast.LENGTH_SHORT).show();
//                    inputPwd.setText("");
//                }

            }
        });
    }

adapter.java

package com.andbase.search.adapter;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.ab.util.AbToastUtil;
import com.andbase.R;
import com.andbase.gettask.model.PatrolTask;
import com.andbase.history.dao.HistoryTaskDao;
import com.andbase.model.appModel.SpinnerOption;
import com.andbase.search.activity.PatrolEndReasonActivity;
import com.andbase.search.activity.SearchActivity;
import com.andbase.search.activity.SearchPointActivity;
import com.andbase.util.spinner.SpinnerViewMultiDialog;
import com.andbase.util.spinner.SpinnerViewPop;
import com.andbase.util.spinner.listener.OnSpinnerConfirmClickListener;
import com.google.gson.Gson;
import com.andbase.util.spinner.SpinnearBean;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * author:lmx
 * date:2018/4/19
 * description:巡检
 */
public class SearchAdapter extends BaseAdapter {

    private SearchActivity mContext;
    //单行的布局
    private int mResource;
    //列表展现的数据
    private List<? extends Map<String, ?>> mData;
    //Map中的key
    private String[] mFrom;
    //view的id
    private int[] mTo;
    //下拉菜单
    private String way[] = new String[]{"在线巡检","离线巡检"};
    private Spinner spWay;
    private int wayindex;
    private String person [][] = null;
    private ArrayAdapter<String> adapterWay,adapterPerson;
    private HistoryTaskDao historyTaskDao;
    private List<SpinnerOption> personList = new ArrayList<SpinnerOption>();
    private String hisTaskIds;//
    //下拉多选
    private SpinnerViewMultiDialog spPerson;
    private TextView tvShow;
    /**下拉菜单列表集合*/
    private ArrayList<SpinnearBean> mSpinnerPersonList;

    /**
     * 构造方法
     * @param context
     * @param data 列表展现的数据
     * @param resource 单行的布局
     * @param from Map中的key
     * @param to view的id
     */
    public SearchAdapter(SearchActivity context, List<? extends Map<String, ?>> data,int resource, String[] from, int[] to){
        mContext = context;
        mData = data;
        mResource = resource;
        mFrom = from;
        mTo = to;
    }

    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        return mData.get(position);
    }

    @Override
    public long getItemId(int position){
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        final ViewHolder holder;
        if(convertView == null){
            //使用自定义的list_items作为Layout
            convertView = LayoutInflater.from(mContext).inflate(mResource, parent, false);
            //使用减少findView的次数
            holder = new ViewHolder();
            holder.itemNo = ((TextView) convertView.findViewById(mTo[0]));
            holder.lineName = ((TextView) convertView.findViewById(mTo[1]));
            holder.patrolTime = ((TextView) convertView.findViewById(mTo[2]));
            holder.finish = ((Button) convertView.findViewById(mTo[3]));
            holder.guid = ((TextView) convertView.findViewById(mTo[4]));
            holder.status = ((ImageView) convertView.findViewById(mTo[5]));
            holder.start = ((Button) convertView.findViewById(mTo[6]));

            //设置标记
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        //设置数据
        final Map<String, ?> dataSet = mData.get(position);
        if (dataSet == null) {
            return null;
        }
        //获取该行数据
        final Object itemNo = dataSet.get(mFrom[0]);
        final Object lineName = dataSet.get(mFrom[1]);
        final Object patrolTime = dataSet.get(mFrom[2]);
        final Object finish = dataSet.get(mFrom[3]);
        final Object guid = dataSet.get(mFrom[4]);
        final Object status = dataSet.get(mFrom[5]);
        final Object start = dataSet.get(mFrom[6]);

        /*** 有用 ***/
        final Object startTime = dataSet.get(mFrom[6]);
        final Object endTime = dataSet.get(mFrom[7]);
        final Object lineCode = dataSet.get(mFrom[8]);
        final Object executeStatus = dataSet.get(mFrom[9]);
        final Object isOrder = dataSet.get(mFrom[10]);
        /*** 有用 ***/

        holder.itemNo.setText(itemNo.toString());
        holder.lineName.setText(lineName.toString());
//        holder.patrolTime.setText(patrolTime.toString());
        holder.finish.setText(finish.toString());
        holder.guid.setText(guid.toString());
//        holder.status.setText(status.toString());
        holder.status.equals(status.toString());

        /** 开始巡检 **/
        holder.start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialogView();
            }
        });
        return convertView;
    }

    /**
     * ViewHolder类
     */
    static class ViewHolder {
        TextView itemNo;//编号
        TextView lineName;//巡检线路
        TextView patrolTime;//巡检时间
        ImageView status;//任务状态
        TextView guid;//id
        TextView lineCode;//巡检线路
        Button start;//开始巡检
        Button finish;//结束巡检
    }

    /**
     * 开始巡检弹出菜单
     */
    private void dialogView() {
        View view1 = LayoutInflater.from(mContext).inflate(R.layout.dialog_patrol_start,null);
        //巡检方式
        spWay = (Spinner) view1.findViewById(R.id.spWay);
        adapterWay = new ArrayAdapter<>(mContext, android.R.layout.simple_dropdown_item_1line,way);
        spWay.setAdapter(adapterWay);
        spWay.setSelection(0, true);//让第一个数据项已经被选中
        //巡检人员
//        spPerson = (Spinner) view1.findViewById(R.id.spPerson);
        spPerson  = (SpinnerViewMultiDialog) view1.findViewById(R.id.spPerson);
        tvShow = (TextView) view1.findViewById(R.id.tvShow);
        mSpinnerPersonList = new ArrayList<SpinnearBean>();
        //模拟获取数据集合
        try{
            mSpinnerPersonList = parseJsonArray("spinners4.txt");
        }catch (Exception e) {
            e.printStackTrace();
        }
        //设置下拉菜单显示的列表项文本
        if (mSpinnerPersonList != null && mSpinnerPersonList.size() > 0){
            spPerson.setData(mSpinnerPersonList);//设置下拉菜单列表集合源
            spPerson.setHint("请选择巡检人员");
        }

        //下拉菜单列表的列表项的点击事件监听
//        spPerson.setOnSpinnerConfirmClickListener(new OnSpinnerConfirmClickListener() {
//            @Override
//            public void OnConfirmed(ArrayList<Boolean> selecteIndexList) {
//                StringBuffer str1 = new StringBuffer();
//                for(int i=0;i<selecteIndexList.size();i++){
//                    if(selecteIndexList.get(i)){//如果为true,则执行下面的代码
////                        str1.append(mSpinnerPersonList.get(i).getParaName() + ":" + mSpinnerPersonList.get(i).getParaValue());
//                        str1.append(mSpinnerPersonList.get(i).getParaName() + " " );
//                    }
//                }
//                tvShow.setVisibility(View.VISIBLE);
////                tvShow.setText(str1);
//
////                StringBuffer str = new StringBuffer();
////                for(int i=0;i<mSpinnerPersonList.size();i++){
////                    str.append(mSpinnerPersonList.get(i).getParaName() + ":" + mSpinnerPersonList.get(i).isSelectedState() + "\n");
////                }
////                tvShow.setText(tvShow.getText() + "=====================\n" + str);
//            }
//        });



//        SpinnerOption c = new SpinnerOption( "-1", "请选择巡检人员");
//        personList.add(c);
//        //设置Adapter
//        ArrayAdapter<SpinnerOption> townAdapter = new ArrayAdapter<SpinnerOption>(mContext,android.R.layout.simple_spinner_item, personList);
//        townAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//        spPerson.setAdapter(townAdapter);

        Button cancel = (Button) view1.findViewById(R.id.btnCancel);
        Button ok = (Button) view1.findViewById(R.id.btnOk);

        //创建Dialog
        final AlertDialog dialog = new AlertDialog.Builder(mContext)
                .create();
        dialog.setTitle("开始巡检");
        dialog.setCancelable(false);
        //设置自定义view
        dialog.setView(view1);
        dialog.show();

        //取消按钮监听点击事件
        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dialog.dismiss();
            }
        });
        //确定按钮监听点击事件
        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

//                if (spPerson.getText().toString().equals("00000000"))
//                {
//                    Toast.makeText(mContext,"密码正确!",Toast.LENGTH_SHORT).show();
//                    dialog.dismiss();
//                }
//                else
//                {
//                    Toast.makeText(mContext,"密码错误,请重新输入!",Toast.LENGTH_SHORT).show();
//                    inputPwd.setText("");
//                }

            }
        });
    }

    /**
     * 解析JSON文件的简单数组
     */
    private ArrayList<SpinnearBean> parseJsonArray(String fileName) throws Exception{

        ArrayList<SpinnearBean> itemsList = new ArrayList<SpinnearBean>();

//        String jsonStr = getStringFromAssert(mContext, fileName);
//        if(jsonStr.equals("")){
//            return null;
//        }
//        JSONObject allData = new JSONObject(jsonStr);  //全部内容变为一个项
//        JSONArray jsonArr = allData.getJSONArray(LISTROOTNODE); //取出数组
//        for(int x = 0;x<jsonArr.length();x++){
//            SpinnearBean model = new SpinnearBean();
//            JSONObject jsonobj = jsonArr.getJSONObject(x);
//            model.setParaName(jsonobj.getString(KEY_LISTITEM_NAME));
//            model.setParaValue(jsonobj.getString(KEY_LISTITEM_VALUE));
//            if(jsonobj.has(KEY_LISTITEM_CHECKCOLOR)){
//                model.setCheckColor(jsonobj.getString(KEY_LISTITEM_CHECKCOLOR));
//            }
//            model.setSelectedState(false);
//            itemsList.add(model);
//            model = null;
//        }

//        JSONArray jsonArr = allData.getJSONArray(LISTROOTNODE); //取出数组
        for(int x = 0;x<4;x++){
            SpinnearBean model = new SpinnearBean();
//            JSONObject jsonobj = jsonArr.getJSONObject(x);
            model.setParaName("张三");
            model.setParaValue("巡检一班");
//            if(jsonobj.has(KEY_LISTITEM_CHECKCOLOR)){
//                model.setCheckColor(jsonobj.getString(KEY_LISTITEM_CHECKCOLOR));
//            }
            model.setSelectedState(false);
            itemsList.add(model);
            model = null;
        }
        return itemsList;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 8,970评论 0 13
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    X先生_未知数的X阅读 15,967评论 3 119
  • 天呐!你知道么!我这几天呢得了抽动症!! 但你不知道那不是抽动症,是颈椎病!!哎呀!我的天呐!那个颈椎病真把我折腾...
    沙曼彤阅读 585评论 0 1
  • 今天是约了保山的客户吃饭,淡谈了项目的合作方式,晚点早早的回家睡着了。
    李代唐阅读 85评论 0 0
  • 别忘了放盐,别忘了放盐!
    齐兴科技阅读 196评论 0 0