new RequestSimulation() { @Override protected void onPostExecute(BusLine busLine) { // 处理返回的 BusLine 对象 ArrayList<BusStop>objArrayList=(ArrayList<BusStop>)busLine.getStops(); ArrayList<String> paramArrayList = objArrayList.stream().map(BusStop::getStopName) // 假设getParam()是取出参数的方法 .collect(Collectors.toCollection(ArrayList::new)); List<String> modifiedData = new ArrayList<>(); ArrayList<Buses> buses = (ArrayList<Buses>) busLine.getBuses(); for (Buses value : buses) { paramArrayList.set(value.getNextStop()-1, paramArrayList.get(value.getNextStop()-1)+"🚗"); } for (String str : paramArrayList) { String[] words = str.split(""); String modifiedStr = String.join("\n", words) + "\n"; modifiedData.add(modifiedStr); } LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false); recyclerView.setLayoutManager(layoutManager); MyAdapter adapter = new MyAdapter(modifiedData); recyclerView.setAdapter(adapter); } }
时间: 2024-02-14 10:24:21 浏览: 21
这段代码是一个异步任务,在任务执行完毕后会调用onPostExecute()方法,该方法的参数为一个BusLine对象。在该方法中,首先通过busLine.getStops()获取到一个BusStop对象的ArrayList,然后使用Java 8的Stream API将每个BusStop对象的getStopName()方法返回值转换为一个String类型的ArrayList。接着,通过busLine.getBuses()获取到一个Buses对象的ArrayList,遍历该ArrayList,将每个Buses对象的getNextStop()-1作为索引值,将paramArrayList中对应位置的字符串后面加上一个小汽车的图标🚗。最后,将paramArrayList中的每个字符串按照每个字符换行的方式拆分,将拆分后的字符串组成一个新的ArrayList modifiedData。最后,将modifiedData中的数据显示在一个横向滚动的RecyclerView中。
相关问题
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ipEditText = findViewById(R.id.ipEditText); portEditText = findViewById(R.id.portEditText); Button connectButton = findViewById(R.id.connectButton); connectButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String ip = ipEditText.getText().toString(); int port = Integer.parseInt(portEditText.getText().toString()); new ConnectTask().execute(ip, String.valueOf(port)); } }); Button sendMessageButton = findViewById(R.id.sendMessageButton); sendMessageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showSendMessageDialog(); } }); } private class ConnectTask extends AsyncTask<String, Void, Void> { @Override protected Void doInBackground(String... params) { String ip = params[0]; int port = Integer.parseInt(params[1]); try { socket = new Socket(ip, port); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(), true); // 在 UI 线程中创建 SeekBar handler.post(new Runnable() { @Override public void run() { SeekBar progressBar = findViewById(R.id.progressBar); progressBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // 计算百分比对应的数字 int number = progress * 10; // 在 UI 线程中更新 ProgressBar 的进度 handler.post(new Runnable() { @Override public void run() { seekBar.setProgress(number); } }); out.println(number); } @Override public void onStartTrackingTouch(SeekBar seekBar) {} @Override public void onStopTrackingTouch(SeekBar seekBar) {} }); } }); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void aVoid) { // 在连接结束后做一些处理 // 比如关闭连接或者显示连接成功的提示 } }代码修改
在 ConnectTask 的 doInBackground 方法中,将 SeekBar 的创建和更新进度的操作都放在了一个 handler.post 的 Runnable 中,从而保证了在子线程中进行操作,避免了在 UI 线程中进行耗时操作的问题。
```
private class ConnectTask extends AsyncTask<String, Void, Void> {
@Override
protected Void doInBackground(String... params) {
String ip = params[0];
int port = Integer.parseInt(params[1]);
try {
socket = new Socket(ip, port);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
// 在子线程中创建 SeekBar
final SeekBar progressBar = new SeekBar(MainActivity.this);
progressBar.setMax(10);
progressBar.setProgress(0);
// 在 UI 线程中添加 SeekBar 到布局中
handler.post(new Runnable() {
@Override
public void run() {
LinearLayout layout = findViewById(R.id.layout);
layout.addView(progressBar);
}
});
progressBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// 计算百分比对应的数字
int number = progress * 10;
// 在子线程中更新 ProgressBar 的进度
handler.post(new Runnable() {
@Override
public void run() {
progressBar.setProgress(progress);
}
});
out.println(number);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
// 在连接结束后做一些处理
// 比如关闭连接或者显示连接成功的提示
}
}
```
liquidPanel = new JPanel() { @Override protected void paintComponent(Graphics g) {}是什么意思,怎么用
这段代码是创建一个 JPanel 对象,并重写了其 paintComponent 方法,该方法用于绘制 JPanel 上的图形,但是在这里该方法没有实现任何绘制操作。这段代码的目的是创建一个不需要绘制图形的 JPanel 对象,通常用于容纳其它组件或实现布局等功能。可以将该对象添加到 JFrame 窗口或其它容器中,例如:
```java
JFrame frame = new JFrame("Demo");
frame.add(new JPanel() {
@Override
protected void paintComponent(Graphics g) {}
});
```
这样就可以创建一个不需要绘制任何图形的 JPanel 并添加到 JFrame 中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)