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官方认证微信卡片免费领取↓↓↓