软件工程日报(5.31)

今日学习内容:

package com.example.kj;

import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView;

import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText;

import java.util.List;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

1private RecyclerView recyclerView;
2private EditText editTextSearch;
3private Button btnSearch, btnGetAll, btnNextPage;
4private PolicyAdapter adapter;
5private int currentPage = 1;
6private static final int PAGE_SIZE = 10;
7
8@SuppressLint("MissingInflatedId")
9@Override
10protected void onCreate(Bundle savedInstanceState) {
11    super.onCreate(savedInstanceState);
12    setContentView(R.layout.activity_main);
13
14    recyclerView = findViewById(R.id.recycler_view);
15    editTextSearch = findViewById(R.id.edit_text_search);
16    btnSearch = findViewById(R.id.btn_search);
17    btnGetAll = findViewById(R.id.btn_get_all);
18    btnNextPage = findViewById(R.id.btn_next_page);
19
20    btnSearch.setOnClickListener(this);
21    btnGetAll.setOnClickListener(this);
22    btnNextPage.setOnClickListener(this);
23
24
25    recyclerView.setLayoutManager(new LinearLayoutManager(this));
26    adapter = new PolicyAdapter(this);
27    recyclerView.setAdapter(adapter);
28
29    // 初始化加载第一页数据
30    loadPolicies(currentPage, PAGE_SIZE);
31}
32
33private void loadPolicies(int page, int pageSize) {
34    new Thread(() -> {
35        List<Policy> policies = PolicyDAO.queryByPage(page, pageSize);
36        runOnUiThread(() -> {
37            adapter.setData(policies);
38            adapter.notifyDataSetChanged();
39        });
40    }).start();
41}
42
43private void searchPolicies() {
44    String searchText = editTextSearch.getText().toString().trim();
45    if (!searchText.isEmpty()) {
46        new Thread(() -> {
47            List<Policy> policies = PolicyDAO.searchPolicies(searchText, "", "");
48            runOnUiThread(() -> {
49                adapter.setData(policies);
50                adapter.notifyDataSetChanged();
51            });
52        }).start();
53    }
54}
55
56private void getAllPolicies() {
57    new Thread(() -> {
58        List<Policy> allPolicies = PolicyDAO.queryAll();
59        runOnUiThread(() -> {
60            adapter.setData(allPolicies);
61            adapter.notifyDataSetChanged();
62        });
63    }).start();
64}
65
66@Override
67public void onClick(View v) {
68    switch (v.getId()) {
69        case R.id.btn_search:
70            searchPolicies();
71            break;
72        case R.id.btn_get_all:
73            getAllPolicies();
74            break;
75        case R.id.btn_next_page:
76            currentPage++;
77            loadPolicies(currentPage, PAGE_SIZE);
78            break;
79    }
80}
81
82// PolicyAdapter 类需要您自行创建,用于将Policy对象绑定到RecyclerView的每个item上
83// 并处理点击事件跳转到详情页面

} 添加一个功能,点击按钮btn_view_details跳转页面,调用getPolicyById方法,用WebView展示数据库中的test内容

收起
 

为了实现您的需求,您需要进行以下步骤:

  1. 添加按钮: 首先,在您的布局文件activity_main.xml中添加一个新的按钮用于查看详细信息。
Xml
1<Button
2    android:id="@+id/btn_view_details"
3    android:layout_width="wrap_content"
4    android:layout_height="wrap_content"
5    android:text="View Details"
6    app:layout_constraintBottom_toBottomOf="parent"
7    app:layout_constraintEnd_toEndOf="parent"
8    app:layout_constraintStart_toStartOf="parent"
9    app:layout_constraintTop_toBottomOf="@id/recycler_view" />
  1. 实现点击事件: 在MainActivity.java中为新添加的按钮注册点击事件,并在onClick方法中处理逻辑。

  2. 定义getPolicyById方法: 假设PolicyDAO类有一个方法可以按ID获取单个政策详情,如果尚未存在,请定义这个方法。

  3. 创建详情Activity: 创建一个新的Activity(例如PolicyDetailActivity)用于显示政策的详细信息。在这个Activity中使用WebView来展示从数据库获取的HTML格式的政策内容。

  4. 传递数据到详情页面: 使用Intent传递政策ID到PolicyDetailActivity,并在该Activity中获取并展示详情。

下面是这些步骤的代码示例:

MainActivity.java 添加按钮点击事件及处理逻辑:

Java
1// 在onClick方法中添加新的case处理
2case R.id.btn_view_details:
3    // 假设选中项是recyclerView的第一个条目,实际应用中您可能需要根据用户选择动态获取
4    Policy selectedPolicy = adapter.getData().get(0); // 需要适配实际情况
5    Intent intent = new Intent(MainActivity.this, PolicyDetailActivity.class);
6    intent.putExtra("policy_id", selectedPolicy.getId()); // 假设Policy类有getId()方法
7    startActivity(intent);
8    break;

PolicyDAO.java 添加或确认getPolicyById方法的存在:

Java
1public static Policy getPolicyById(int policyId) {
2    // 实现按ID查询单个Policy的逻辑,返回Policy对象
3}

PolicyDetailActivity.java 创建并设置WebView以展示政策详情:

Java
1public class PolicyDetailActivity extends AppCompatActivity {
2
3    private WebView webViewPolicyDetails;
4
5    @Override
6    protected void onCreate(Bundle savedInstanceState) {
7        super.onCreate(savedInstanceState);
8        setContentView(R.layout.activity_policy_detail);
9
10        webViewPolicyDetails = findViewById(R.id.web_view_policy_details);
11        webViewPolicyDetails.getSettings().setJavaScriptEnabled(true); // 如果需要支持JavaScript
12
13        Intent intent = getIntent();
14        int policyId = intent.getIntExtra("policy_id", -1);
15
16        if (policyId != -1) {
17            Policy policy = PolicyDAO.getPolicyById(policyId);
18            // 假设Policy对象有个getContent()方法返回HTML格式的政策内容
19            String content = policy.getContent();
20            webViewPolicyDetails.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null);
21        }
22    }
23}

activity_policy_detail.xml 布局文件:

Xml
1<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2    android:layout_width="match_parent"
3    android:layout_height="match_parent"
4    android:orientation="vertical">
5
6    <WebView
7        android:id="@+id/web_view_policy_details"
8        android:layout_width="match_parent"
9        android:layout_height="match_parent"/>
10
11</LinearLayout>

请确保根据您的具体需求调整上述代码示例,比如如何确定用户选择的政策项、处理可能的空值情况等。

posted @   夏季彼岸德  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示