Dialog里加入下拉框Java_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
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弹出框,带单选多选下拉相关推荐
- 自定义 cube-ui 弹出框dialog支持多个且多种类型的input框
start 最近遇到一个需求,给一个移动端项目加一点小功能. 移动端 UI 组件库使用的是 cube-ui. 但是基础的 cube-ui 不太满足我的需求- 重点是记录一下我的思路,其次才是实现的代码 ...
- android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog
本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...
- html自定义js程序,JS中微信小程序自定义底部弹出框
实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...
- bootstrap获取弹框数据_Bootstrap模态弹出框的实例教程
前面的话 在 Bootstrap 框架中把模态弹出框统一称为 Modal.这种弹出框效果在大多数 Web 网站的交互中都可见.比如点击一个按钮弹出一个框,弹出的框可能是一段文件描述,也可能带有按钮操作 ...
- html表单弹窗提示框,【前端】弹出框提交表单
[前端]弹出框提交表单 发布时间:2018-11-03 22:30, 浏览次数:826 目录 * 功能描述 * 效果截图 * 代码 * html代码 * 触发弹出窗口的按钮 * js代码 * 弹出框的 ...
- Android自定义退出弹出框
在应用中不是很常见自定义的退出弹出框,游戏中我们经常能看到.下面就看下是怎么实现的,首先我们定义一个方法,当用户点击退出的时候调用这个方法. 1 private void dialog() { 2 f ...
- android tv 悬浮窗口,android TV的自定义关机弹出框
关机的时候会走power的相关部分 首先我们监听power键的文件是在frameworks\base\services\core\java\com\android\server\policy\Phon ...
- 如何在腾讯地图上设置多种颜色的点位和自定义背景弹出框
1.引入地图js <script >var now = new Date();var number = now.getYear().toString() + now.getMonth(). ...
- 微信小程序 -- 自定义底部弹出框(带动画--滑入滑出)
实现这么一个功能,点击选项进行选择,效果是从底部弹出选项框(带滑出动画),选择了某项或者点击其他地方,隐藏(带滑出动画).效果图如下: 可适用于任何场景,如普通选项(如图)或者类似商城小程序选择商品属 ...
- 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 ...
最新文章
- spring boot 搭建 和 全局异常处理
- java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式
- BSP(BUSINESS SERVER PAGES)完整主机名设置及实现
- Sublime Text 3无法安装Package Control插件的解决
- Nucleic Acids Research | NONCODE数据库V6版发布,涵盖全面的动植物长非编码RNA注释
- 完全卸载Oracle数据库步骤
- find和chmod结合来修改权限
- paip.提升用户体验之全角半角
- 荐一个不错的UI设计网站: uimaker
- JUnit 5和JUnit 4比较
- 【小程序源码】花体字转换器支持多种花样字体不同风格
- SAP 采购订单入库——收货业务分析
- 集成底座项目实施总结
- 贷款违约行为的ANOVA分析——关于不同抽样方法得到不同结论的分析
- Unity流水账9:Timeline
- Android 10.0 行为变更(一)针对所有 API 级别的应用
- MAX3221 - RS232 电路
- Java中的数组缩减题目解答
- (一)GNURadio3.9 安装教程
- 逻辑门器件,直接用二极管、三极管搭建
热门文章
- 【Error】:10061由于目标计算机积极拒绝,无法连接
- TP-link路由器设置界面展示
- 【转】从CSDN的趣味题学C# 3.0
- 核心JavaScript——词法结构
- 设计模式(Design Patterns)总结归纳
- Intellij IDEA 使用jrebel运行spring-boot并实现自动编译进行热部署
- 寻找Harris、Shi-Tomasi和亚像素角点
- 2000条你应知的WPF小姿势 基础篇57-62 依赖属性进阶
- 拓端tecdat|R语言弹性网络Elastic Net正则化惩罚回归模型交叉验证可视化
- 拓端tecdat|R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列