首页 > 其他分享 >地铁查询系统Android,MainActivity

地铁查询系统Android,MainActivity

时间:2024-04-15 21:13:16浏览次数:29  
标签:void 查询 MainActivity 地铁 import Override new Android public

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

        // 获取 AutoCompleteTextView 控件
        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 实例
        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() {
                        // 创建 Retrofit 实例
                        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");
                                    }

                                    // 切换回主线程更新 UI
                                    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() {
                        // 创建 Retrofit 实例
                        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");
                                    }

                                    // 切换回主线程更新 UI
                                    runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
                                            // 获取显示结果的 TextView 控件
                                            TextView resultTextView = findViewById(R.id.resultTextView);
                                            // 将查询结果设置到 TextView 中
                                            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() {
                        // 创建 Retrofit 实例
                        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");
                                    }

                                    // 切换回主线程更新 UI
                                    runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
                                            // 获取显示结果的 TextView 控件
                                            TextView resultTextView = findViewById(R.id.resultTextView);
                                            // 将查询结果设置到 TextView 中
                                            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[]{"新百广场", "北国商城"};
    }
}


标签:void,查询,MainActivity,地铁,import,Override,new,Android,public
From: https://www.cnblogs.com/muzhaodi/p/18136902

相关文章

  • Android修改应用列表的失败学习
    没什么实用价值,一种记叙文和学习笔记的结合体。 0.回老家收到新需求:能不能处理一下这台旧手机,让我在家打上单位的钉钉打卡?旧手机型号华为荣耀7i,安卓版本4.0.3。看到华为两个字,我仿佛看到了我失败的未来。1. 首先想到的必然是虚拟定位。但钉钉显然会防范这种方法。搜索资料......
  • Android Studio制作简单登录界面
    实现目标应用线性布局设计登录界面,要求点击输入学号时弹出数字键盘界面,点击输入密码时弹出字母键盘,出现的文字、数字、尺寸等全部在values文件夹下相应.xml文件中设置好,使用时直接引用。当用户名或密码为空,显示一个提示信息“用户名与密码不能为空!”,当用户名和密码匹配,显示“登录......
  • Android 11--设置第三方Launcher并默认 与 如何预置apk
    1.0Ver/frameworks/base/core/java/com/android/internal/app/ResolverActivity.java+privatevoidsetDefaultLauncher(){+try{+finalPackageManagerpm=getPackageManager();++//StringdefPackageName="com.android......
  • android http post
    android httppost  privatevoidsendLocationToServer(doublelatitude,doublelongitude){StringtagID="xcvxczvxzvcxz";Stringname="";Stringbiaoduan="";Stringtype1="";......
  • 地铁最后的曙光重制版汉化、全成就、全收集攻略
    汉化教程:https://www.bilibili.com/video/BV1ss4y1F7wd/?spm_id_from=333.337.search-card.all.click43日记全收集:https://www.bilibili.com/video/BV1zb41147c4/?spm_id_from=333.337.search-card.all.click&vd_source=cab44df4107f3ff939a34437ecc16887全成就:原文链接......
  • Android 11 导航栏添加一个虚拟按钮--问题合集
    导航栏添加一个虚拟按钮按钮功能:显示隐藏导航栏1.frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.javaprotectedStringgetDefaultLayout(){finalintdefaultResource=QuickStepContract.isGesturalMode(mN......
  • Android蓝牙打印(转)
    把Android变为蓝牙打印设备摘要随着移动技术的快速发展,蓝牙打印设备在各行各业中得到广泛应用。本文将介绍如何将Android设备转化为蓝牙打印设备,以便实现无线打印功能。首先,我们将了解蓝牙打印机工作原理,然后介绍如何在Android平台上开发相关功能,并提供代码示例。1.蓝牙打印机......
  • 再次理解Android targetSdkVersion
    1.问题发生第一问题发生:两个APP访问同一个系统类android.net.IpConfiguration,均正常编译生成apk安装到同一台设备上(排除了外部因素)。一个app能正常访问IpConfiguration的属性IpAssignmentipAssignment,另一个却报错没有这个属性。出问题的那个app,我通过反射获取获取并打印了Ip......
  • ANDROID STUDIO操作蓝牙打印机(转)
    前言工作中或多或少都会遇到困扰自己很久的问题,我也毫无例外,曾经在项目中对蓝牙打印这一块也困惑和迷茫过,最近在做项目重构的时候,翻看了之前写的代码,还是决定通过两篇文章详细阐述蓝牙连接打印机完成整个打印流程的操作,目的是对工作的一种总结,其次是输出。好比玩个压缩,又是绿......
  • android studio 清单配置文件androidmainfest.xml解读
    1、注册Activity页面,并指定首页。 所有的页面文件要在此文件中注册。指定是APP的首页:(android:exported="true")和下面的intent-filter中的两行,; 2、需要的权限要在此文件中指定;<uses-permissionandroid:name="android.permission.BLUETOOTH_SCAN"/><?xmlver......