Java 如何让我的RSS阅读器接收不同的URL并获取他们的RSS提要
我有一个可用的RSSreader,但它只适用于主活动中硬编码的1个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();
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。然后列表视图出来了。