首页 > 其他分享 >个人课堂练习02

个人课堂练习02

时间:2024-06-19 22:35:25浏览次数:12  
标签:02 课堂练习 个人 void private intent import android View

个人课堂练习02

5月15日

今天是将web端的政策查询使得在手机端也能实现,同样借鉴了学长的

package com.example.policyquery;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.policyquery.api.ApiService;
import com.example.policyquery.api.RetrofitClient;
import com.example.policyquery.DataModel.Policy;

import java.util.ArrayList;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class MainActivity extends AppCompatActivity {

private LinearLayout llOverview;
private LinearLayout llCategory;
private ListView policyListView;
private AutoCompleteTextView searchInput;
private TextView resultTextView;
private ApiService apiService;
private ArrayAdapter<String> policyAdapter;
private List<Policy> policyList;
private List<String> policyNames;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 初始化视图
llOverview = findViewById(R.id.LL1);
llCategory = findViewById(R.id.LL2);
policyListView = findViewById(R.id.policyListView);
searchInput = findViewById(R.id.searchInput);
resultTextView = findViewById(R.id.resultTextView);

Button overviewButton = findViewById(R.id.overviewButton);
Button categoryButton = findViewById(R.id.categoryButton);
Button searchButton = findViewById(R.id.searchButton);

// 初始化ApiService
apiService = RetrofitClient.getRetrofitInstance().create(ApiService.class);

// 初始化政策列表和适配器
policyList = new ArrayList<>();
policyNames = new ArrayList<>();
policyAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, policyNames);
policyListView.setAdapter(policyAdapter);

// 在程序启动时调用getAllPolicies
getAllPolicies();

// 设置按钮点击事件监听器
overviewButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 显示政策概览界面,隐藏政策分类界面
llOverview.setVisibility(View.VISIBLE);
llCategory.setVisibility(View.GONE);
}
});

categoryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 显示政策分类界面,隐藏政策概览界面
llOverview.setVisibility(View.GONE);
llCategory.setVisibility(View.VISIBLE);
// 可以在这里添加获取政策分类的方法
}
});

searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 执行查询操作
performSearch();
}
});

// 设置政策名称点击事件监听器
policyListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// 跳转到详情页
Intent intent = new Intent(MainActivity.this, PolicyDetailActivity.class);
Policy selectedPolicy = policyList.get(position);
intent.putExtra("policyId", selectedPolicy.getId());
intent.putExtra("policyName", selectedPolicy.getName());
intent.putExtra("policyType", selectedPolicy.getType());
intent.putExtra("policyCategory", selectedPolicy.getCategory());
intent.putExtra("policyRange", selectedPolicy.getRange());
intent.putExtra("policyDocument", selectedPolicy.getDocument());
intent.putExtra("policyForm", selectedPolicy.getForm());
intent.putExtra("policyOrgan", selectedPolicy.getOrgan());
intent.putExtra("policyText", selectedPolicy.getText());
startActivity(intent);
}
});
}

private void getAllPolicies() {
apiService.getAllPolicies().enqueue(new Callback<List<Policy>>() {
@Override
public void onResponse(Call<List<Policy>> call, Response<List<Policy>> response) {
if (response.isSuccessful() && response.body() != null) {
List<Policy> policies = response.body();
// 将政策添加到列表中并更新适配器
policyList.clear();
policyNames.clear();
policyList.addAll(policies);
for (Policy policy : policies) {
policyNames.add(policy.getName());
}
policyAdapter.notifyDataSetChanged();
} else {
Log.e("MainActivity", "获取政策数据失败");
}
}

@Override
public void onFailure(Call<List<Policy>> call, Throwable t) {
Log.e("MainActivity", "网络请求失败", t);
}
});
}

private void performSearch() {
String query = searchInput.getText().toString();

apiService.queryPolicy(query).enqueue(new Callback<List<Policy>>() {
@Override
public void onResponse(Call<List<Policy>> call, Response<List<Policy>> response) {
if (response.isSuccessful() && response.body() != null) {
List<Policy> policies = response.body();
// 显示查询结果并更新政策列表
policyList.clear();
policyNames.clear();
policyList.addAll(policies);
for (Policy policy : policies) {
policyNames.add(policy.getName());
}
policyAdapter.notifyDataSetChanged();
} else {
Log.e("MainActivity", "查询政策数据失败");
}
}

@Override
public void onFailure(Call<List<Policy>> call, Throwable t) {
Log.e("MainActivity", "网络请求失败", t);
}
});
}
}

 

标签:02,课堂练习,个人,void,private,intent,import,android,View
From: https://www.cnblogs.com/hlhl/p/18257646

相关文章

  • CSP历年复赛题-P8815 [CSP-J 2022] 逻辑表达式
    原题链接:https://www.luogu.com.cn/problem/P8815题意解读:计算逻辑表达式的值以及&,|短路操作的次数。解题思路:又是一道经典的中缀表达式的变形问题,如果对中缀表示式如何求值不理解,移步https://www.acwing.com/problem/content/3305/进行复习如果对表示式如何构建树形结构以及......
  • 个人课堂练习01
    今天建民让我们在课堂上实现安卓端的连接数据库,然后实现增删改,我在课堂上三个小时只实现了mysql本地数据库的连接,然后在回到宿舍后,弄到了晚上22点,我实现了增删改以下是我的代码:pckagecom.example.newone;importandroidx.appcompat.app.AppCompatActivity;importandroi......
  • SEETF-2023 express-javascript-security ejs相关漏洞
    今天做个ejs相关题目。进入页面只发现一个输入框,题目标签是ejs相关,去github看看源码,发现ejs版本为3.1.9,可以确定地是rce漏洞。接下来说说这个rce漏洞。3.1.9版本的rce漏洞主要是因为使用了这个模板来构建网页逻辑导致的。点击查看代码//index.jsconstexpress=require('e......
  • 持续总结中!2024年面试必问 20 道设计模式面试题(六)
    上一篇地址:持续总结中!2024年面试必问20道设计模式面试题(五)-CSDN博客十一、迭代器模式(IteratorPattern)解决了什么问题?迭代器模式(IteratorPattern)解决了如何顺序访问一个聚合对象中的各个元素,而不暴露其内部的表示的问题。这种模式定义了一种方法来遍历集合,同时保持了对象......
  • 硬笔楷书|02. 横
    短横:长度相对较短,有一定斜度,一般情况下短横要比长横倾斜一点,基本没有太大的弧度,是一个比较直的状态,力度上由轻到重,速度写起来比较快。凌空取势、由轻到重(具体的轻重要根据所写的字来进行调整)长横:长度相对较长,有一定角度,中间稍微有一点弧度,轻入笔,力度上轻重轻重,行笔速度相对......
  • 20240619打卡-个人总结博客
    个人总结1.回顾课程计划完成情况在第一周制定的课程计划中,我列出了具体的目标和期望,并计划通过一系列的学习和实践活动来实现这些目标。具体数据和实际例子如下:目标1:掌握SpringBoot和Vue框架的基本使用。完成情况:通过老师的指导和多次实践,我成功地完成了一个基于SpringB......
  • 分享一下,如何搭建个人网站的步骤
        在这段充满探索与创造的奇妙旅途中,我就像一位耐心的建筑师,在数字世界的荒原上精心雕琢,两周的时光缓缓流淌。每天,我与代码共舞,手执HTML、CSS与JavaScript这三大构建魔杖,一砖一瓦地筑起了梦想中的网络城堡。从零到一,我的网站如幼苗破土,渐渐枝繁叶茂,每一行代码都是浇......
  • 【漏洞复现】Zyxel NAS设备 setCookie 未授权命令注入漏洞(CVE-2024-29973)
    0x01产品简介Zyxel-NAS是指由ZyxelCommunicationsCorporation(合勤科技股份有限公司)开发和生产的网络附加存储(NetworkAttachedStorage,简称NAS)设备。NAS是一种专门用于存储和共享文件的设备,它通过网络连接到计算机、服务器或其他设备,提供集中式的文件存储和访问功能......
  • 整理好了!2024年最常见 20 道设计模式面试题(五)
    上一篇地址:整理好了!2024年最常见20道设计模式面试题(四)-CSDN博客九、什么是命令模式?它如何帮助实现解耦?命令模式(CommandPattern)是一种行为设计模式,它将一个请求或操作封装为一个对象。这种模式的主要目的是将发起请求的对象与执行请求的对象解耦,从而让不同的请求、队列或者......
  • 20240619打卡-结课博客
    本学期总结博客个人成长与反思随着本学期的结束,我在石家庄铁道大学软件工程专业的学习之旅也迈上了一个新的台阶。回顾这段时间,我不仅在理论知识方面有所提升,更重要的是通过实战项目积累了宝贵的经验。这些经历使我更加认识到,作为一名未来的软件工程师,实操能力和团队合作精神是......