有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 安卓让ListView项目在浏览器中打开URL?

我正在按照本网站的示例构建RSS提要阅读器:

https://www.安卓pit.com/java-guide-2-program-your-own-rss-reader

此时,当您单击提要标题时,什么也没有发生。我想让它做的是在浏览器中打开相应的链接,但我还没有弄明白

我试过这个:

private String readItem(XmlPullParser parser) throws XmlPullParserException, IOException {
            String result = null;
            parser.require(XmlPullParser.START_TAG, null, "item");
            while (parser.next() != XmlPullParser.END_TAG) {
                if (parser.getEventType() != XmlPullParser.START_TAG) {
                    continue;
                }
                String name = parser.getName();
                if (name.equals("title")) {
                    result = readTitle(parser);                 
                } else {
                    skip(parser);
                }
            } 
            return result;
        }

        // Processes link tags in the feed.
        private List<String> readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
            ArrayList<String> link = new ArrayList<>();
            parser.require(XmlPullParser.START_TAG, null, "link");
            link.add(readText(parser));
            parser.require(XmlPullParser.END_TAG, null, "link");
            return link;
        }

        // Processes title tags in the feed.
        private String readTitle(XmlPullParser parser) throws IOException, XmlPullParserException {
            parser.require(XmlPullParser.START_TAG, null, "title");
            String title = readText(parser);
            parser.require(XmlPullParser.END_TAG, null, "title");
            return title;
        }

我最后得到一个警告,说readLink方法从未在本地使用。我不确定是否应该更改readItem方法,因为有一个readChannel方法要求返回的值为字符串

当我在祝酒词中使用public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); ... }时,我能够看到被单击的项目的位置,但当我使用此选项时,应用程序崩溃

        Uri uri = Uri.parse(link.get(position));
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(intent);

所以我的问题是:如何打开指向相应标题链接的浏览器?我是java和安卓开发的新手,所以请耐心听我说

另外,我已经将我的ListView设置为可点击


共 (1) 个答案

  1. # 1 楼答案

    对。我已经弄明白了,所以我想在这里分享一下,以防有人在找同样的东西

    我不得不在PlaceholderFragment类中添加private ArrayList<String> links = new ArrayList<>();

    public static class PlaceholderFragment extends ListFragment {
         private ArrayList<String> links = new ArrayList<>();
        ...
    }
    

    readItem方法进行以下更改:

    if (name.equals("title")) {
        result = readTitle(parser);                 
    } else if (name.equals("link")) {
        links.add(readLink(parser));
    } else {
        skip(parser);
    }
    

    添加以下内容:

            // Processes link tags in the feed.
            private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException {
                parser.require(XmlPullParser.START_TAG, null, "link");
                String link = readText(parser);
                parser.require(XmlPullParser.END_TAG, null, "link");
                return link;
            }
    

    然后加上:

        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
            super.onListItemClick(l, v, position, id);
    
            Uri uri = Uri.parse(links.get(position));
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }
    

    希望这对别人有帮助