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

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

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

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">

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" />

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" />

android:layout_width="match_parent"

android:layout_height="40dp"

android:gravity="right">

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"

/>

android:layout_width="match_parent"

android:layout_height="@dimen/link_line_h"

android:background="@color/gray_white"/>

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">

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" />

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" />

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" />

android:layout_width="match_parent"

android:layout_height="40dp"

android:gravity="right">

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"/>

android:layout_width="match_parent"

android:layout_height="1dip"

android:background="@color/gray_white"/>

android:id="@+id/llBox"

android:layout_width="match_parent"

android:layout_height="50dip"

android:background="@null">

android:id="@+id/btnCancel"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="@null"

android:text="取消" />

android:layout_width="1dip"

android:layout_height="match_parent"

android:background="@color/gray_white"/>

android:id="@+id/btnOk"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:background="@null"

android:text="确定" />

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();

//模拟获取数据集合

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 selecteIndexList) {

// StringBuffer str1 = new StringBuffer();

// for(int i=0;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

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 townAdapter = new ArrayAdapter(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> 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 adapterWay,adapterPerson;

private HistoryTaskDao historyTaskDao;

private List personList = new ArrayList();

private String hisTaskIds;//

//下拉多选

private SpinnerViewMultiDialog spPerson;

private TextView tvShow;

/**下拉菜单列表集合*/

private ArrayList mSpinnerPersonList;

/**

* 构造方法

* @param context

* @param data 列表展现的数据

* @param resource 单行的布局

* @param from Map中的key

* @param to view的id

*/

public SearchAdapter(SearchActivity context, List extends Map> 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 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();

//模拟获取数据集合

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 selecteIndexList) {

// StringBuffer str1 = new StringBuffer();

// for(int i=0;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

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 townAdapter = new ArrayAdapter(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 parseJsonArray(String fileName) throws Exception{

ArrayList itemsList = new ArrayList();

// 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

// 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;

}

}

Dialog里加入下拉框Java_android 自定义dialog弹出框,带单选多选下拉相关推荐

  1. 自定义 cube-ui 弹出框dialog支持多个且多种类型的input框

    start 最近遇到一个需求,给一个移动端项目加一点小功能. 移动端 UI 组件库使用的是 cube-ui. 但是基础的 cube-ui 不太满足我的需求- 重点是记录一下我的思路,其次才是实现的代码 ...

  2. android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog

    本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...

  3. html自定义js程序,JS中微信小程序自定义底部弹出框

    实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...

  4. bootstrap获取弹框数据_Bootstrap模态弹出框的实例教程

    前面的话 在 Bootstrap 框架中把模态弹出框统一称为 Modal.这种弹出框效果在大多数 Web 网站的交互中都可见.比如点击一个按钮弹出一个框,弹出的框可能是一段文件描述,也可能带有按钮操作 ...

  5. html表单弹窗提示框,【前端】弹出框提交表单

    [前端]弹出框提交表单 发布时间:2018-11-03 22:30, 浏览次数:826 目录 * 功能描述 * 效果截图 * 代码 * html代码 * 触发弹出窗口的按钮 * js代码 * 弹出框的 ...

  6. Android自定义退出弹出框

    在应用中不是很常见自定义的退出弹出框,游戏中我们经常能看到.下面就看下是怎么实现的,首先我们定义一个方法,当用户点击退出的时候调用这个方法. 1 private void dialog() { 2 f ...

  7. android tv 悬浮窗口,android TV的自定义关机弹出框

    关机的时候会走power的相关部分 首先我们监听power键的文件是在frameworks\base\services\core\java\com\android\server\policy\Phon ...

  8. 如何在腾讯地图上设置多种颜色的点位和自定义背景弹出框

    1.引入地图js <script >var now = new Date();var number = now.getYear().toString() + now.getMonth(). ...

  9. 微信小程序 -- 自定义底部弹出框(带动画--滑入滑出)

    实现这么一个功能,点击选项进行选择,效果是从底部弹出选项框(带滑出动画),选择了某项或者点击其他地方,隐藏(带滑出动画).效果图如下: 可适用于任何场景,如普通选项(如图)或者类似商城小程序选择商品属 ...

  10. wpf 点击按钮弹出选择框_WPF-PopupWindow wpf右下角弹出框,通过按钮调用,类似QQ CSharp C#编程 238万源代码下载- www.pudn.com...

    文件名称: WPF-PopupWindow下载 收藏√  [ 5  4  3  2  1 ] 开发工具: C# 文件大小: 90 KB 上传时间: 2013-07-24 下载次数: 19 详细说明:w ...

最新文章

  1. spring boot 搭建 和 全局异常处理
  2. java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式
  3. BSP(BUSINESS SERVER PAGES)完整主机名设置及实现
  4. Sublime Text 3无法安装Package Control插件的解决
  5. Nucleic Acids Research | NONCODE数据库V6版发布,涵盖全面的动植物长非编码RNA注释
  6. 完全卸载Oracle数据库步骤
  7. find和chmod结合来修改权限
  8. paip.提升用户体验之全角半角
  9. 荐一个不错的UI设计网站: uimaker
  10. JUnit 5和JUnit 4比较
  11. 【小程序源码】花体字转换器支持多种花样字体不同风格
  12. SAP 采购订单入库——收货业务分析
  13. 集成底座项目实施总结
  14. 贷款违约行为的ANOVA分析——关于不同抽样方法得到不同结论的分析
  15. Unity流水账9:Timeline
  16. Android 10.0 行为变更(一)针对所有 API 级别的应用
  17. MAX3221 - RS232 电路
  18. Java中的数组缩减题目解答
  19. (一)GNURadio3.9 安装教程
  20. 逻辑门器件,直接用二极管、三极管搭建

热门文章

  1. 【Error】:10061由于目标计算机积极拒绝,无法连接
  2. TP-link路由器设置界面展示
  3. 【转】从CSDN的趣味题学C# 3.0
  4. 核心JavaScript——词法结构
  5. 设计模式(Design Patterns)总结归纳
  6. Intellij IDEA 使用jrebel运行spring-boot并实现自动编译进行热部署
  7. 寻找Harris、Shi-Tomasi和亚像素角点
  8. 2000条你应知的WPF小姿势 基础篇57-62 依赖属性进阶
  9. 拓端tecdat|R语言弹性网络Elastic Net正则化惩罚回归模型交叉验证可视化
  10. 拓端tecdat|R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列