Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何让我的RSS阅读器接收不同的URL并获取他们的RSS提要_Java_Android_Android Studio_Rss - Fatal编程技术网

Java 如何让我的RSS阅读器接收不同的URL并获取他们的RSS提要

Java 如何让我的RSS阅读器接收不同的URL并获取他们的RSS提要,java,android,android-studio,rss,Java,Android,Android Studio,Rss,我有一个可用的RSSreader,但它只适用于主活动中硬编码的1个url。我想这样做,我有一个编辑字段,它可以在任何网址,我决定把和获取一个按钮的RSS 下面是我的当前代码- try { URL url = new URL("http://feeds.pcworld.com/pcworld/latestnews"); XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

我有一个可用的RSSreader,但它只适用于主活动中硬编码的1个url。我想这样做,我有一个编辑字段,它可以在任何网址,我决定把和获取一个按钮的RSS

下面是我的当前代码-

    try {
        URL url = new URL("http://feeds.pcworld.com/pcworld/latestnews");

        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(false);
        XmlPullParser xpp = factory.newPullParser();

        // We will get the XML from an input stream
        xpp.setInput(getInputStream(url), "UTF_8");


        boolean insideItem = false;

        // Returns the type of current event: START_TAG, END_TAG, etc..
        int eventType = xpp.getEventType();
        while (eventType != XmlPullParser.END_DOCUMENT) {
            if (eventType == XmlPullParser.START_TAG) {

                if (xpp.getName().equalsIgnoreCase("item")) {
                    insideItem = true;
                } else if (xpp.getName().equalsIgnoreCase("title")) {
                    if (insideItem)
                        headlines.add(xpp.nextText()); //extract the     headline
                } else if (xpp.getName().equalsIgnoreCase("link")) {
                    if (insideItem)
                        links.add(xpp.nextText()); //extract the link of    article
                }
            }else if(eventType== XmlPullParser.END_TAG &&   xpp.getName().equalsIgnoreCase("item")){
                insideItem=false;
            }

            eventType = xpp.next();
        }

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


    ArrayAdapter adapter = new ArrayAdapter(this,
            android.R.layout.simple_list_item_1, headlines);
ListView lv=(ListView) findViewById(R.id.listrssreader);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int    position, long id) {
            Uri uri = Uri.parse((String)links.get(position));
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }
    });
}

public void fetch(View v){

}

public InputStream getInputStream(URL url) {
    try {
        return url.openConnection().getInputStream();
    } catch (IOException e) {
        return null;
    }
}


}
试试看{
URL=新URL(“http://feeds.pcworld.com/pcworld/latestnews");
XmlPullParserFactory工厂=XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
XmlPullParser xpp=factory.newPullParser();
//我们将从输入流中获取XML
setInput(getInputStream(url),“UTF_8”);
布尔值insideItem=false;
//返回当前事件的类型:开始标记、结束标记等。。
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START_标记){
if(xpp.getName().equalsIgnoreCase(“项”)){
insideItem=真;
}else if(xpp.getName().equalsIgnoreCase(“title”)){
如果(内部项目)
headlines.add(xpp.nextText());//提取标题
}else if(xpp.getName().equalsIgnoreCase(“链接”)){
如果(内部项目)
links.add(xpp.nextText());//提取文章的链接
}
}else if(eventType==XmlPullParser.END_标记&&xpp.getName().equalsIgnoreCase(“项”)){
insideItem=假;
}
eventType=xpp.next();
}
}捕获(格式错误){
e、 printStackTrace();
}catch(XMLPullParseRexE){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_1,标题);
ListView lv=(ListView)findViewById(R.id.listrssreader);
低压设置适配器(适配器);
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Uri=Uri.parse((字符串)links.get(位置));
意图=新意图(Intent.ACTION\u视图,uri);
星触觉(意向);
}
});
}
公共无效获取(视图v){
}
公共输入流getInputStream(URL){
试一试{
返回url.openConnection().getInputStream();
}捕获(IOE异常){
返回null;
}
}
}
现在我设法让它工作起来了。我一启动应用程序,它就会直接进入不同RSS提要的列表视图。我想启动应用程序,只有Textfield和fetch按钮。在我输入URL并按下fetch按钮后,它将进入rss源的列表视图。

  • 步骤1:声明一个带有EditText的活动,该活动将接收您的URL以及按钮调用开始按钮
  • 第二步:点击按钮,在编辑文本中获取url并将其打包成一个Intent,然后调用StarTacity(Intent)
  • 步骤3:在RSS Listview活动中,提取给定的URL并将RSS列表加载到Listview
很简单,对吧

上面写着什么

  URL url = new URL("http://feeds.pcworld.com/pcworld/latestnews");
用字符串替换链接

String link = /*insert URL from user input (maybe from a EditText) */ 

所以现在看起来像
URL=newurl(link)

你有什么问题?我的列表视图是rss提要弹出的第一个内容。我希望它有一个文本字段,在这里我可以键入一个url,我可以获取rssfeed。然后列表视图出来了。