You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将安卓App的GUI元素从TextView改为HTMLView以识别超链接

公告板展示App开发问题说明

我需要开发一款仅展示指定公告板网页内容的App,当前遇到的问题是:通过Jsoup爬取网页内容后,使用TextView展示时无法识别内容中的超链接,需要将展示用的GUI元素从TextView替换为HTMLView。

相关代码

公告板数据爬取类

public class BlackBoardClient {
    private static final String BLACK_BOARD_URL = "https://zpa.cs.hm.edu/public/notice_board/";
    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");

    public static List<BlackBoardEntry> getBlackBoardEntries() throws IOException  {
        List<BlackBoardEntry> entries = new ArrayList<>();
        Document doc = Jsoup.connect(BLACK_BOARD_URL).get();
        Element newsTable = doc.getElementById("content").selectFirst("table");
        Iterable<Element> rows = newsTable.selectFirst("tbody").children();

        for (Element row : rows) {
            Iterator<Element> columns = row.children().iterator();
            String author = columns.next().text();
            String title = columns.next().text();
            String content = columns.next().text();
            LocalDate validFrom = LocalDate.parse(columns.next().text(), FORMATTER);
            LocalDate validUntil = LocalDate.parse(columns.next().text(), FORMATTER);
            BlackBoardEntry entry = new BlackBoardEntry(author, title, content, validFrom, validUntil);
            entries.add(entry);
        }

        return entries;
    }
}

主页面逻辑类

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView dataList = findViewById(R.id.dataList);

        dataList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                BlackBoardEntry entry = (BlackBoardEntry) parent.getItemAtPosition(position);
                String content = entry.getContent();
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View popupView = inflater.inflate(R.layout.content_popup, null, false);
                ((TextView) popupView.findViewById(R.id.contentView)).setText(content);

                PopupWindow popup = new PopupWindow(popupView, 500, 1000, true);
                popup.showAtLocation(parent, Gravity.CENTER, 0, 0);


                }
        });

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    List<BlackBoardEntry> entries = BlackBoardClient.getBlackBoardEntries();
                    BlackBoardAdapter adapter = new BlackBoardAdapter(entries, getApplicationContext());
                    dataList.post(new Runnable() {
                        @Override
                        public void run() {
                            dataList.setAdapter(adapter);
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

当前显示效果

公告板内容显示效果图

内容的提问来源于stack exchange,提问作者Irina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:06:00