PSP0(Personal Software Process Stages ) |
所需时间(TIME) |
Planning(计划) |
今天把安卓端学穿了 |
estimate[估计这个任务需要多少时间 ] |
2h |
Development (开发 ) |
|
· Design [具体设计 ] |
1 |
· Coding [具体编码 ] |
2 |
· Test [测试(自我测试,修改代码,提交修改)] |
2 |
Reporting(报告 ) |
|
· Postmortem & Process Improvement Plan [事后总结, 并提出过程改进计划 ] |
1h |
package com.example.metro_info_front_end;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.metro_info_front_end.DataModel.MetroStation;
import com.example.metro_info_front_end.api.ApiService;
import com.example.metro_info_front_end.api.RetrofitClient;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
private LinearLayout llOptimalRoute;
private LinearLayout llMetroLine;
private AutoCompleteTextView systemName1;
private AutoCompleteTextView systemName2;
private AutoCompleteTextView lineName;
private AutoCompleteTextView departureStation;
private AutoCompleteTextView destinationStation;
private ApiService apiService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
llOptimalRoute = findViewById(R.id.LL1);
llMetroLine = findViewById(R.id.LL2);
Button btnOptimalRoute = findViewById(R.id.btn1);
Button btnMetroLine = findViewById(R.id.btn2);
btnOptimalRoute.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
llOptimalRoute.setVisibility(View.VISIBLE);
llMetroLine.setVisibility(View.GONE);
}
});
btnMetroLine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
llOptimalRoute.setVisibility(View.GONE);
llMetroLine.setVisibility(View.VISIBLE);
}
});
systemName1 = findViewById(R.id.SystemName1);
systemName2 = findViewById(R.id.SystemName2);
lineName = findViewById(R.id.LineName);
departureStation = findViewById(R.id.DepartureStation);
destinationStation = findViewById(R.id.DestinationStation);
ArrayAdapter<String> cityAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, getCityData());
ArrayAdapter<String> lineAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, getLineData());
ArrayAdapter<String> stationAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, getStationData());
systemName1.setAdapter(cityAdapter);
systemName2.setAdapter(cityAdapter);
lineName.setAdapter(lineAdapter);
departureStation.setAdapter(stationAdapter);
destinationStation.setAdapter(stationAdapter);
apiService = RetrofitClient.getRetrofitInstance().create(ApiService.class);
Button query1 = findViewById(R.id.query1);
Button query2 = findViewById(R.id.query2);
query1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String city1 = systemName1.getText().toString();
String departure = departureStation.getText().toString();
String destination = destinationStation.getText().toString();
new Thread(new Runnable() {
@Override
public void run() {
ApiService apiService = RetrofitClient.getRetrofitInstance().create(ApiService.class);
Call<List<MetroStation>> call = apiService.searchShortestPath(city1, departure, destination);
call.enqueue(new Callback<List<MetroStation>>() {
@Override
public void onResponse(Call<List<MetroStation>> call, Response<List<MetroStation>> response) {
if (response.isSuccessful() && response.body() != null) {
List<MetroStation> stations = response.body();
final StringBuilder resultBuilder = new StringBuilder();
for (MetroStation station : stations) {
resultBuilder.append(station.getStationName()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, resultBuilder.toString(), Toast.LENGTH_LONG).show();
}
});
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "查询失败", Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public void onFailure(Call<List<MetroStation>> call, Throwable t) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "网络请求失败", Toast.LENGTH_SHORT).show();
}
});
}
});
}
}).start();
}
});query1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String city1 = systemName1.getText().toString();
String departure = departureStation.getText().toString();
String destination = destinationStation.getText().toString();
new Thread(new Runnable() {
@Override
public void run() {
ApiService apiService = RetrofitClient.getRetrofitInstance().create(ApiService.class);
Call<List<MetroStation>> call = apiService.searchShortestPath(city1, departure, destination);
call.enqueue(new Callback<List<MetroStation>>() {
@Override
public void onResponse(Call<List<MetroStation>> call, Response<List<MetroStation>> response) {
if (response.isSuccessful() && response.body() != null) {
List<MetroStation> stations = response.body();
final StringBuilder resultBuilder = new StringBuilder();
for (MetroStation station : stations) {
resultBuilder.append(station.getStationName()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView resultTextView = findViewById(R.id.resultTextView);
resultTextView.setText(resultBuilder.toString());
}
});
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "查询失败", Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public void onFailure(Call<List<MetroStation>> call, Throwable t) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "网络请求失败", Toast.LENGTH_SHORT).show();
}
});
}
});
}
}).start();
}
});
query2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String city2 = systemName2.getText().toString();
String lineName1 = lineName.getText().toString();
new Thread(new Runnable() {
@Override
public void run() {
ApiService apiService = RetrofitClient.getRetrofitInstance().create(ApiService.class);
Call<List<MetroStation>> call = apiService.getStationsBySystemAndLine(city2, lineName1);
call.enqueue(new Callback<List<MetroStation>>() {
@Override
public void onResponse(Call<List<MetroStation>> call, Response<List<MetroStation>> response) {
if (response.isSuccessful() && response.body() != null) {
List<MetroStation> stations = response.body();
final StringBuilder resultBuilder = new StringBuilder();
for (MetroStation station : stations) {
resultBuilder.append(station.getStationName()).append("\n");
}
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView resultTextView = findViewById(R.id.resultTextView);
resultTextView.setText(resultBuilder.toString());
}
});
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "查询失败", Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public void onFailure(Call<List<MetroStation>> call, Throwable t) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "网络请求失败", Toast.LENGTH_SHORT).show();
}
});
}
});
}
}).start();
}
});
}
private String[] getCityData() {
return new String[]{"石家庄"};
}
private String[] getLineData() {
return new String[]{"一号线"};
}
private String[] getStationData() {
return new String[]{"新百广场", "北国商城"};
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-04-15 2023.4.15