iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android如何实现拼多多地址选择器
  • 266
分享到

Android如何实现拼多多地址选择器

2023-06-15 00:06:22 266人浏览 八月长安
摘要

这篇文章主要介绍了Android如何实现拼多多地址选择器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Android是什么Android是一种基于linux内核的自由及开放源

这篇文章主要介绍了Android如何实现拼多多地址选择器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Android是什么

Android是一种基于linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发

突然想做一款地区选择器,然后我的弹框用的第三方的,地区数据用的是本地的JSON文件,解析json文件,然后把数据放在list集合里面,然后设置到弹框里面,问题解决

源码下载地址

效果图

Android如何实现拼多多地址选择器

引用builder

implementation 'com.google.code.gson:gson:2.8.0'implementation 'com.contrarywind:Android-PickerView:4.1.9'

json文件存放地址:

E:\workspace\android\MyApplication25\app\src\main\assets\citydata.json

解析类bean

package com.example.myapplication25;  import java.io.Serializable;import java.util.List; public class CityBean {         private int code;    private String message;    private DatasBean datas;     public int getCode() {        return code;    }     public void setCode(int code) {        this.code = code;    }     public String getMessage() {        return message;    }     public void setMessage(String message) {        this.message = message;    }     public DatasBean getDatas() {        return datas;    }     public void setDatas(DatasBean datas) {        this.datas = datas;    }     public static class DatasBean implements Serializable {        private List<ListBean> list;         public List<ListBean> getList() {            return list;        }         public void setList(List<ListBean> list) {            this.list = list;        }         public static class ListBean implements Serializable {                         private String area_id;            private String area_name;            private List<CitylistBean> citylist;             public String getArea_id() {                return area_id;            }             public void setArea_id(String area_id) {                this.area_id = area_id;            }             public String getArea_name() {                return area_name;            }             public void setArea_name(String area_name) {                this.area_name = area_name;            }             public List<CitylistBean> getCitylist() {                return citylist;            }             public void setCitylist(List<CitylistBean> citylist) {                this.citylist = citylist;            }             public static class CitylistBean implements Serializable {                                 private String area_id;                private String area_name;                private List<ArealistBean> arealist;                 public String getArea_id() {                    return area_id;                }                 public void setArea_id(String area_id) {                    this.area_id = area_id;                }                 public String getArea_name() {                    return area_name;                }                 public void setArea_name(String area_name) {                    this.area_name = area_name;                }                 public List<ArealistBean> getArealist() {                    return arealist;                }                 public void setArealist(List<ArealistBean> arealist) {                    this.arealist = arealist;                }                 public static class ArealistBean implements Serializable {                                         private String area_id;                    private String area_name;                     public String getArea_id() {                        return area_id;                    }                     public void setArea_id(String area_id) {                        this.area_id = area_id;                    }                     public String getArea_name() {                        return area_name;                    }                     public void setArea_name(String area_name) {                        this.area_name = area_name;                    }                }            }        }    }}

弹框类

package com.example.myapplication25;  import android.app.Activity;import android.graphics.Color; import com.bigkoo.pickerview.builder.OptionsPickerBuilder;import com.bigkoo.pickerview.listener.OnOptionsSelectChangeListener;import com.bigkoo.pickerview.listener.OnOptionsSelectListener;import com.bigkoo.pickerview.view.OptionsPickerView; public class SelectPickerUtil {    protected static OptionsPickerView pvOptions;      public static OptionsPickerBuilder getSelectPickerBuilder2(OptionsPickerBuilder optionsPickerBuilder) {        optionsPickerBuilder                .setTitleText("title")                .setSubmitColor(Color.parseColor("#11DBFF"))                .setCancelColor(Color.parseColor("#999999"))                .setDividerColor(Color.GRAY)                .setLineSpacingMultiplier(2.2f)                .setTextColorCenter(Color.parseColor("#11DBFF")) //设置选中项文字颜色                .setContentTextSize(16);        return optionsPickerBuilder;    }     public static OptionsPickerBuilder getSelectPickerBuilder3(OptionsPickerBuilder optionsPickerBuilder) {        optionsPickerBuilder                .setDividerColor(Color.DKGRAY)                .setContentTextSize(20)                .setSubmitColor(Color.parseColor("#11DBFF"))                .setCancelColor(Color.parseColor("#999999"))                //                .setDecorView(mFrameLayout)//非dialog模式下,设置ViewGroup, pickerView将会添加到这个ViewGroup中                .setOutSideColor(0x00000000)                .setLineSpacingMultiplier(2.2f)                .setOutSideCancelable(true);        return optionsPickerBuilder;    }     public static OptionsPickerView initChoiceArea(Activity activity, OnOptionsSelectListener onOptionsSelectListener, OnOptionsSelectChangeListener onOptionsSelectChangeListener) {        pvOptions = new OptionsPickerBuilder(activity, onOptionsSelectListener)                .setOptionsSelectChangeListener(onOptionsSelectChangeListener)                .setSubmitText("确定")//确定按钮文字                .setCancelText("取消")//取消按钮文字                .setTitleText("城市选择")//标题                .setSubCalSize(18)//确定和取消文字大小                .setTitleSize(20)//标题文字大小                .setTitleColor(0xFFF9731E)//标题文字颜色                .setSubmitColor(0xFFF9731E)//确定按钮文字颜色                .setCancelColor(0xFFF9731E)//取消按钮文字颜色                .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。                .setCyclic(false, false, false)//循环与否                .setSelectOptions(0, 0, 0)  //设置默认选中项                .setOutSideCancelable(false)//点击外部dismiss default true//                .isDialog(true)//是否显示为对话框样式                .isRestoreItem(true)//切换时是否还原,设置默认选中第一项。                .build();        return pvOptions;    } }

主界面

package com.example.myapplication25;  import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.bigkoo.pickerview.listener.OnOptionsSelectChangeListener;import com.bigkoo.pickerview.listener.OnOptionsSelectListener;import com.bigkoo.pickerview.view.OptionsPickerView;import com.google.gson.Gson;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity implements OnOptionsSelectListener, OnOptionsSelectChangeListener {    //参考网址:https://GitHub.com/Bigkoo/Android-PickerView    //  省    protected List<String> options1Items = new ArrayList<>();    protected List<String> city;    //  市    protected List<List<String>> options2Items = new ArrayList<>();    //  区    protected List<List<List<String>>> options3Items = new ArrayList<>();    //  省地理    protected List<String> options1Itemsnumber = new ArrayList<>();    protected List<String> citynumber;    protected List<List<String>> area;    protected List<List<String>> areanumber;    protected List<String> chirendenarea;    protected List<String> chirendenareanumber;    //  市地理    protected List<List<String>> options2Itemsnumber = new ArrayList<>();    //  区地理    protected List<List<List<String>>> options3Itemsnumber = new ArrayList<>();     private Button btn_location;    private TextView tv_location;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         getCaseInfo2();        btn_location = findViewById(R.id.btn_location);        tv_location = findViewById(R.id.tv_location);        btn_location.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                anXzXz();            }        });    }     public void anXzXz() {        OptionsPickerView build = SelectPickerUtil.initChoiceArea(MainActivity.this, this, this);        build.setPicker(options1Items, options2Items, options3Items);//添加数据源        build.show();    }     private void getCaseInfo2() {        String json = null;        try {            InputStream inputStream = getAssets().open("citydata.json");            int size = inputStream.available();            byte[] buffer = new byte[size];            inputStream.read(buffer);            inputStream.close();            json = new String(buffer, "UTF-8");        } catch (IOException ex) {            ex.printStackTrace();        }        //  Log.e("TAG","loadJsonFromAssests_all:"+json.toString());        Gson gson = new Gson();        CityBean userSimple = gson.fromJson(json, CityBean.class);        for (int i = 0; i < userSimple.getDatas().getList().size(); i++) {            options1Items.add(userSimple.getDatas().getList().get(i).getArea_name());            options1Itemsnumber.add(userSimple.getDatas().getList().get(i).getArea_id());            city = new ArrayList<>();            citynumber = new ArrayList<>();            area = new ArrayList<>();            areanumber = new ArrayList<>();            List<CityBean.DatasBean.ListBean.CitylistBean> citylist = userSimple.getDatas().getList().get(i).getCitylist();            for (int o = 0; o < userSimple.getDatas().getList().get(i).getCitylist().size(); o++) {                city.add(citylist.get(o).getArea_name());                citynumber.add(citylist.get(o).getArea_id());                chirendenarea = new ArrayList<>();                chirendenareanumber = new ArrayList<>();                List<CityBean.DatasBean.ListBean.CitylistBean.ArealistBean> arealist = userSimple.getDatas().getList().get(i).getCitylist().get(o).getArealist();                for (int u = 0; u < userSimple.getDatas().getList().get(i).getCitylist().get(o).getArealist().size(); u++) {                    chirendenarea.add(arealist.get(u).getArea_name());                    chirendenareanumber.add(arealist.get(u).getArea_id());                }                area.add(chirendenarea);                areanumber.add(chirendenareanumber);            }            options2Items.add(city);            options2Itemsnumber.add(citynumber);            options3Items.add(area);            options3Itemsnumber.add(areanumber);        }    }     @Override    public void onOptionsSelectChanged(int options1, int options2, int options3) {     }     @Override    public void onOptionsSelect(int options1, int options2, int options3, View view) {        tv_location.setText(String.fORMat("%s省--%s--%s",                options1Items.get(options1),                options2Items.get(options1).get(options2),                options3Items.get(options1).get(options2).get(options3)));        Log.e("TAG", "onOptionsSelect_end:" +                options1Itemsnumber.get(options1) + options1Items.get(options1)                + options2Itemsnumber.get(options1).get(options2) + options2Items.get(options1).get(options2)                + options3Itemsnumber.get(options1).get(options2).get(options3) + options3Items.get(options1).get(options2).get(options3));    }}

布局页面就是一个button和一个textview,请自行添加

感谢你能够认真阅读完这篇文章,希望小编分享的“Android如何实现拼多多地址选择器”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Android如何实现拼多多地址选择器

本文链接: https://www.lsjlt.com/news/276066.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL怎么更新字段长度
    要更新MySQL表中的字段长度,可以使用ALTER TABLE语句。以下是更新字段长度的示例: ALTER TABLE table_...
    99+
    2024-05-14
    mysql
  • sql如何修改表字段长度
    要修改表字段的长度,可以使用ALTER TABLE语句,然后使用MODIFY COLUMN来修改字段的长度。以下是一个示例: ALT...
    99+
    2024-05-14
    sql
  • mysql数据量太大如何解决
    有几种方法可以解决MySQL数据量过大的问题: 数据库分区:将数据库表按照某种规则进行分区,分成多个小表,可以提高查询速度和管理...
    99+
    2024-05-14
    mysql
  • MySQL单表数据量过大如何解决
    在MySQL中,当单表的数据量过大时,可以采取以下几种方法来解决问题: 使用索引:在表的字段上创建适当的索引,可以提高查询效率,...
    99+
    2024-05-14
    mysql
  • mysql导出数据量过大如何解决
    当导出的数据量过大时,可以尝试以下方法来解决问题: 使用数据库工具:使用数据库管理工具如Navicat或MySQL Workbe...
    99+
    2024-05-14
    mysql
  • mysql中log_bin的作用是什么
    在MySQL中,log_bin是二进制日志文件的名称,用于记录所有对数据库进行更改的操作,如插入、更新、删除等。这些二进制日志文件可...
    99+
    2024-05-14
    mysql
  • mysql中log_bin的特点有哪些
    log_bin是MySQL的二进制日志文件,用于记录所有对数据库的修改操作,包括插入、更新、删除等。 log_bin文件是M...
    99+
    2024-05-14
    mysql
  • mysql rpm包安装的方法是什么
    要在Linux系统上安装MySQL RPM包,可以按照以下步骤操作: 下载MySQL的RPM包:你可以从MySQL官方网站下载适...
    99+
    2024-05-14
    mysql
  • mysql rpm包安装后怎么使用
    安装MySQL RPM包后,您可以通过以下步骤来使用MySQL: 启动MySQL服务:使用以下命令来启动MySQL服务: sud...
    99+
    2024-05-14
    mysql
  • lxml中怎么处理XML命名空间默认值
    在lxml中处理XML命名空间的默认值可以通过使用xpath()方法和register_namespace()方法来实现。...
    99+
    2024-05-14
    lxml
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作