Android 之 自定义选择器网络获取信息

Android 之 自定义选择器网络获取信息

1,okhttp网络获取列表数据
2,获取数据写入ArrayList
3,ArrayList 转数组 String[]
4,将转好的数组数据传入 最终自定义选择器中

核心代码:

        DeviceBean data = new Gson().fromJson(responseData, DeviceBean.class);

        List<String> list3 = new ArrayList<>();

        for (int i = 0; i < data.getRows().size(); i++) {
            System.out.println("111111>>打印每条数据>>" + data.getRows().get(i).getDeviceCode()); // 打印
            String deviceCode = data.getRows().get(i).getDeviceName();
            list3.add(deviceCode); // 1,获取数据写入ArrayList
        }
        System.out.println("111111>>打印list3>>" + list3); // 打印

        int size = list3.size(); // 2,获取ArrayList长度
        String[] array = (String[]) list3.toArray(new String[size]); // 3,ArrayList 转数组 String[]


        System.out.println("111111>>array>>" + array);

        OptionPicker picker = new OptionPicker(MattingActivity.this,
                array // 4,将转好的数组数据传入 最终自定义选择器中。原 new String[] {"一个","两个"}
        );
        picker.setOffset(2);
        picker.setSelectedIndex(1);
        picker.setTextSize(11);
        picker.setOnOptionPickListener(new OptionPicker.OnOptionPickListener() {
            @Override
            public void onOptionPicked(String option) {
                showToast(option);
            }

            private void showToast(String option) {
                optiondeviceid = option;
                matting_tv01.setText(option);
//                                Log.d("111111" + TAG, "initView02>>" + option);
            }
        });
        picker.show();



全部代码:


        matting_tv01.setOnClickListener(v ->
                // 点击按钮,获取数据
                getHttp_deviceid();
        );


    /**
     * okhttp get请求
     */
    private String optiondeviceid = null;
    public void getHttp_deviceid() {

//        // 获取传递的值
//        Intent intentid = getIntent();
//        // 取 项目id
//        String getProjectId = intentid.getStringExtra("getProjectId");
//        String getProjectName = intentid.getStringExtra("getProjectName");
//        Log.d("111111", "initView01>>" + getProjectId + getProjectName);

        // 取 Token
        SharedPreferences sharedPreferences = getSharedPreferences("logonsp", MODE_PRIVATE);
        String token = sharedPreferences.getString("token", "");
        Log.d("111111ProjectFragment>>", "getAccess_token:" + sharedPreferences.getString("token", ""));


//        // 账号密码转为Json格式传给后台
//        MediaType JSON = MediaType.parse("application/json; charset=utf-8");
//        // 将要传的参数保存进Json对象
//        JSONObject jsJson = new JSONObject();
//        try {
//            jsJson.put("cruiseId", "0");
//        } catch (JSONException e) {
//            e.printStackTrace();
//        }
//        Log.d("111111 jsJson ====", ":" + jsJson);
//
//        // 创建一个RequestBody(参数1:数据类型 参数2传递的json串)
//        RequestBody requestBody = RequestBody.create(JSON, String.valueOf(jsJson));


        // 3 . 构建Request,将FormBody作为Post方法的参数传入
        Request request = new Request.Builder()
                .url(HTTP_URL + "/facility/device/list") // "?projectId=" + getProjectId
                .addHeader("Authorization", "Bearer " + token)
                .addHeader("Content-Type", "application/json;charset=UTF-8")
//                .post(requestBody)
                .build();

        // 1 . 拿到OkHttpClient对象
        OkHttpClient client = new OkHttpClient.Builder().readTimeout(5000, TimeUnit.SECONDS).build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                // 请求成功返回结果,如果希望返回的是字符串
                final String responseData = response.body().string();
                // 如果希望返回的是inputStream,有inputStream我们就可以通过IO的方式写文件.
                // InputStream responseStream=response.body().byteStream();
                // 注意,此时的线程不是ui线程,如果此时我们要用返回的数据进行ui更新,操作控件,就要使用相关方法
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // 更新UI的操作
                        DeviceBean data = new Gson().fromJson(responseData, DeviceBean.class);

                        List<String> list3 = new ArrayList<>();

                        for (int i = 0; i < data.getRows().size(); i++) {
                            System.out.println("111111>>打印每条数据>>" + data.getRows().get(i).getDeviceCode()); // 打印
                            String deviceCode = data.getRows().get(i).getDeviceName();
                            list3.add(deviceCode); // 1,获取数据写入ArrayList
                        }
                        System.out.println("111111>>打印list3>>" + list3); // 打印

                        int size = list3.size(); // 2,获取ArrayList长度
                        String[] array = (String[]) list3.toArray(new String[size]); // 3,ArrayList 转数组 String[]


                        System.out.println("111111>>array>>" + array);

                        OptionPicker picker = new OptionPicker(MattingActivity.this,
                                array // 4,将转好的数组数据传入 最终自定义选择器中。原 new String[] {"一个","两个"}
                        );
                        picker.setOffset(2);
                        picker.setSelectedIndex(1);
                        picker.setTextSize(11);
                        picker.setOnOptionPickListener(new OptionPicker.OnOptionPickListener() {
                            @Override
                            public void onOptionPicked(String option) {
                                showToast(option);
                            }

                            private void showToast(String option) {
                                optiondeviceid = option;
                                matting_tv01.setText(option);
//                                Log.d("111111" + TAG, "initView02>>" + option);
                            }
                        });
                        picker.show();



                    }
                });
            }
        });

    }


依赖:

dependencies {
    // xutils
    implementation 'org.xutils:xutils:3.5.0'
    // okhttp
    implementation 'net.qiujuer.common:okhttp:3.0.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.4.2'

    // gson
    implementation 'com.google.code.gson:gson:2.8.2'

    // 自定义选择器依赖
    implementation 'cn.qqtheme.framework:AndroidPicker:latest.integration'
//    implementation 'cn.qqtheme.framework:WheelPicker:latest.integration'
//    implementation 'cn.qqtheme.framework:ColorPicker:latest.integration'
//    implementation 'cn.qqtheme.framework:FilePicker:latest.integration'
}

权限:

    <!--网络权限-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--文件读取权限-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

最后

如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。

如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
在这里插入图片描述
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

全套视频资料:

一、面试合集

在这里插入图片描述
二、源码解析合集
在这里插入图片描述

三、开源框架合集
在这里插入图片描述
欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值