Android's custom selector network to obtain information

Android's custom selector network to obtain information

1681205207141.png

1. Obtain list data from okhttp network
2. Write the obtained data into ArrayList
3. Convert ArrayList to array String[]
4. Pass the converted array data into the final custom selector

Core code:

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


Full code:


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



                    }
                });
            }
        });

    }

rely:

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'
}

Permissions:

    <!--网络权限-->
    <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" />

 

Guess you like

Origin blog.csdn.net/jun_tong/article/details/130743067