Android仿京东地址选择器

46 篇文章 0 订阅
订阅专栏
16 篇文章 0 订阅
订阅专栏

仿京东地址选择器,第一次选择从省开始,第二次会自动定位到已选择位置,三级地址可以点击切换选择,但是没有实现左右滑动切换;此demo只用一个列表,如果需要左右滑动可以改用TabLayout+ViewPage实现。
首先上效果图
在这里插入图片描述
在这里插入图片描述
一、PopupU.java

public static Dialog showRegionView(Context context, int mType, final String province, final String city, final String area, final OnRegionListener onRegionListener) {
		//创建一个dialog
        final Dialog dialog = new Dialog(context, R.style.DialogCommonStyle);
        Window window = dialog.getWindow();
        window.setGravity(Gravity.BOTTOM);
        //添加view
        window.setContentView(R.layout.layout_region);
        //在dialog中自定义一个PopupWindow
        RegionPopupWindow regionPopupWindow = window.findViewById(R.id.regionPpw);
        // 设置历史记录
        regionPopupWindow.setHistory(mType, province, city, area);
        // 设置右上角叉号监听
        regionPopupWindow.setOnForkClickListener(new RegionPopupWindow.OnForkClickListener() {
            @Override
            public void onForkClick() {
                dialog.dismiss();
            }
        });
        // 设置item监听,回调传回结果
        regionPopupWindow.setOnRpwItemClickListener(new RegionPopupWindow.OnRpwItemClickListener() {
            @Override
            public void onRpwItemClick(String selectedProvince, String selectedCity, String selectedArea) {
            	//结果通过回调传给activity
                onRegionListener.onRegionListener(selectedProvince, selectedCity, selectedArea);
                dialog.dismiss();
            }
        });

        dialog.setCanceledOnTouchOutside(true);
        WindowManager.LayoutParams attributes = window.getAttributes();
        attributes.width = PhoneU.getScreenPix(context).widthPixels;// 宽为手机屏幕宽
        attributes.height = PhoneU.getScreenPix(context).heightPixels * 4/5;// 高为手机屏幕高的4/5
        window.setBackgroundDrawableResource(R.color.white);
        window.setAttributes(attributes);
        window.setWindowAnimations(R.style.AnimBottom);
        dialog.show();
        return dialog;
    }

二、RegionPopupWindow.java
代码中注释很清晰,主要说明:上面3个TextVIew显示选择结果,下面列表用的RecyclerView实现,如果需要左右滑动可以改用TabLayout+ViewPage。
三、RegionAdapter.java
这里用3个集合分别记录省/市/县的选中状态,以此来达到在重新选择(编辑)模式下自动选中已选择地址item效果

public void refreshData(List<RegionBean> provinceDatas, int dataType, String checkedProvince, String checkedCity, String checkedArea) {
        this.provinceDatas = provinceDatas;
        this.dataType = dataType;
        this.checkedProvince = checkedProvince;
        this.positionProvince = getProvincePisition(checkedProvince);
        this.positionCity = getCityPosition(checkedProvince, checkedCity);
        this.positionArea = getAreaPosition(checkedProvince, checkedCity, checkedArea);
        // 初始化选中状态false
        if (dataType == DATA_PROVINCE) {
            isCheckedP.clear();
            if (provinceDatas == null) {
                return;
            }
            for (int i = 0; i < provinceDatas.size(); i++) {
                isCheckedP.add(false);
            }
            if (positionProvince != -1) {
                isCheckedP.set(positionProvince, true);
            }
        } else if (dataType == DATA_CITY) {
            isCheckedC.clear();
            if (provinceDatas == null ||
                    provinceDatas.get(positionProvince) == null ||
                    provinceDatas.get(positionProvince).citys == null) {
                return;
            }
            for (int i = 0; i < provinceDatas.get(positionProvince).citys.size(); i++) {
                isCheckedC.add(false);
            }
            if (positionCity != -1) {
                isCheckedC.set(positionCity, true);
            }
        } else if (dataType == DATA_AREA){
            isCheckedA.clear();
            if (provinceDatas == null ||
                    provinceDatas.get(positionProvince) == null ||
                    provinceDatas.get(positionProvince).citys == null ||
                    provinceDatas.get(positionProvince).citys.get(positionCity) == null ||
                    provinceDatas.get(positionProvince).citys.get(positionCity).areas == null) {
                return;
            }
            for (int i = 0; i < provinceDatas.get(positionProvince).citys.get(positionCity).areas.size(); i++) {
                isCheckedA.add(false);
            }
            if (positionArea != -1) {
                isCheckedA.set(positionArea, true);// 已选中
            }
        }
        notifyDataSetChanged();
    }

github地址:AddressSelector

Android仿京东地址省市区选择器
攻城狮丶小白 的博客
12-04 2万+
Android仿京东地址省市区选择器
Android 仿京东地址地区选择器 支持三级县城四级乡镇选择
02-02
Android 代码studio工程,导入直接能用 地区库完美拷贝京东地区选择 ,覆盖全国5万多个乡镇地区选择,可以直接在项目中使用。
城市选择器Android
最新发布
weixin_40821587的博客
08-26 37
我整理的一些关于【Android,选择器,UI】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/eDOcp1如何在Android中实现城市选择器 城市选择器是移动应用中常见的功能,有助于用户从下拉列表中选择城市。本文将为您详细介绍如何在Android应用中实现一个基本的城市选...
Android仿京东地址选择-修改
09-30
修改版---仿京东地址选择器一比一复刻,原理:viewpager+tablayout+view
Android仿京东地址省市区选择器源码
12-04
Android仿京东地址省市区选择器 运行在Android Studio上。
Android进阶之路 - 仿京东地址选择器使用指南
Android、前端、小程序、后端
07-26 9153
因为现在项目的地址选择器比较low,自己又比较懒,所以就找到了`仿京东地址选择器`,观赏几篇博文之后,发现总是被半路卡死,很难一路走到底,所以在github找到了项目地址,但是`作者的功能简介又介绍的不是很详细`,总会有一些小的知识点遗漏,到了最后只能非常无奈的查看了源代码,然后实现了自己的功能所需,一些小坑在下方列出,请君观赏。......
Android-Android项目中实现一个类似于京东地址选择器的效果
08-13
Android项目中实现一个类似于京东地址选择器的效果
仿京东城市地址选择器
07-09
京东地址选择、无限循环选择、Swift5.1仿京东App使用Swift写的地址选择器View,有任何问题欢迎交流与指正https://github.com/XiAnRuFeng/YXPickerViewDemo请给个star鼓励下
仿京东地址选择器(带省市区编号)
12-30
总结来说,“仿京东地址选择器(带省市区编号)”是一个基于JSON解析和ListView的Android组件,它实现了便捷的地址选择功能,适合那些需要处理地理位置信息的移动应用。通过理解和运用这些知识点,开发者可以提高...
Android仿京东地址选择
09-30
仿京东地址选择器一比一复刻,原理:viewpager+tablayout+view
android 完美仿京东地址选择DEMO
hanyaohua的博客
04-20 3205
package chihane.jdaddressselector.widget; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.ListView; public class Unintercepta...
Android-仿京东地址选择实现可弹框ViewPagerRecyclerView实现
08-13
仿京东地址选择实现,可弹框(ViewPager RecyclerView实现)
android 仿京东收货地址 三级联动
07-18
仿京东收货地址三级联动
仿京东地址选择
10-11
仿京东商城地址选择
Android地址选择器 类似于京东地址选择
热门推荐
Blin
05-10 1万+
简介最近东西写的挺多的,这不又要弄一个类似于京东地址选择器,然后刚开始我是不愿意自己去写的,这东西就是费时间,然后大致浏览了一会,发现真没有符合公司需求的,好吧,那就自己开撸。先看看效果图,不知道是不是大家想要的。然后京东是用在一个从下而上的弹窗里面的。 主要功能1.大致分为三个模块:顶部的Tab模块,中间的移动指示器模块,还有就是下面的list了。 2.支持点击数据后自动跳到下一个Tab
Android 地址选择器仿京东
Choi晨的博客
11-28 1259
控件很简单,上方tab是使用LinearLayout动态添加View,下方就是一个RecyclerView; 目前的数据就三级(省市区\县),选择完成或点击确定就回调结果(Json字符串); 点击上方的tab可以回选; .... 很简单,主要是代码和思路吧;看一下代码; public class AddressSelectView extends RelativeLayout { ...
android地址联动选择器,仿京东样式Android 客户端的级联地址选择器
weixin_39952074的博客
05-26 458
一个 Android京东手机客户端(当前版本V5.0.1 build 28529)风格的级联地址选择器。添加依赖项目的build.gradle中:allprojects {repositories {...maven { url "https://jitpack.io"}}}模块的build.gradle中:dependencies {...compile 'com.github.ch...
android 仿京东地址选择_Android实现地址选择器工具类
weixin_39620984的博客
11-27 396
一般现在很多地址选择器都是仿苹果,三级联动的地址选择器,但给人的感觉缺少点Android精神。为什么不用Popupwindow来展示呢!以前写pop要写很多东西在Activity中,而其他地方要用,又得写重复的,就算复制过来,也会加深当前页面的复杂度!所以这里打算把其提取出来!首先我们要写个工具类:(里面包含了popwindow布局初始化,数据填充,打开和关闭,背景透明度变化等!)pub...
android收货地址选择与保存,Android仿京东客户端选择收货地址小Demo
weixin_35743031的博客
05-26 532
记录一下最近项目中有一个类似于京东客户端选择收货地址的需求。实现结果如下: 实现思路:ViewPager+Fragment+TabLayout在Fragment里面的listview的点击事件里面发送广播在Activity里面接收发来的广播,进行逻辑处理本次实现主要用到ViewPager、Fragment、TabLayout 主要代码:TabActivity.javapublic class T...
Android四级联动地址选择器实现教程
"Android实现四级联动地址选择器,通过XML布局和Java代码配合,创建一个可以展示省、市、区、街道四级地址的组件。" 在Android开发中,经常需要实现一个联动地址选择器,让用户能够方便地选择所在的位置。这种选择...
写文章

热门文章

  • 以太坊学习之Java开发框架web3j的使用---部署合约 8055
  • (一)区块链钱包之生成助记词 5091
  • RecyclerView分页加载 3908
  • 以太坊搭建---初始化创始块 3878
  • 以太坊学习之常用命令 3275

分类专栏

  • java 10篇
  • 数据库 1篇
  • Android 46篇
  • 区块链技术 6篇
  • 导包异常 1篇
  • 笔记 16篇
  • Flutter 1篇

最新评论

  • Android关于设备唯一标识符的获取,适配Android10

    m0_65398228: 固定的。

  • 第三方登录 QQ登录时 No permission to write APN settings问题

    想快快毕业: 请问以下我的出现的是No permission to access APN settings,这部分代码和你的一样。怎么解决呢

  • RecyclerView的Item复用导致动画不执行问题

    baidu_33979074: status 是啥?

最新文章

  • (三)区块链钱包之加密算法简介
  • (一)区块链钱包之生成助记词
  • 从源码分析Handler机制
2021年2篇
2020年25篇
2019年16篇
2018年4篇
2017年7篇
2016年1篇
2015年2篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳坪山网站建设公司巩义资讯网站搭建优化模特网站优化ppt怎样快速优化网站百度排名博爱一站式网站搭建优化武昌网站优化哪家好坪山网站建设东光网站优化效果网站优化seo推广涧西网站优化怎么选专注郑州网站优化推广南京网站优化建站雅安专业网站优化莱阳网站优化收费风湿病医院网站优化服务恩施品牌网站优化公司排名企业网站优化的办法和方法网站的优化只选z火17星热情吉林网站关键词优化什么价格洛阳教育网站优化荆门产品网站优化公司排名网站页面优化哪家好莱州网站seo优化网站怎么优化才有效如何做好新闻网站内容优化不得不思考的网站优化方案杨浦区搜狗网站优化公司白银市专业的网站优化安丘网站优化软件深圳官方网站优化费用多少盐山网站布局优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化