【发布时间】:2014-07-07 13:25:51
【问题描述】:
我正在尝试解析 rss 提要:http://feeds.feedburner.com/Talk_Android
我使用了一个在线教程并对其进行了修改。
我已成功检索到标题和 pubDate。我也尝试检索描述标签并且它已经工作了..但是我似乎无法弄清楚如何检索内容:编码标签。我想检索标题和内容:列表视图中项目的编码 Onclick ..标题很好..在调试时内容为空,这显然是因为我在我的代码中使用了字符串“内容”,而该字符串在 rss 提要中的任何地方都不存在......我已经经历了所有类似的事情关于这个的帖子,但似乎仍然无法清楚地了解我应该做什么.. 任何帮助将不胜感激..
这是NewsBean.java的代码
package com.samir;
public class NewsBean {
private String title;
private String description;
private String pubDate;
private String link;
private String content;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPubDate() {
return pubDate;
}
public void setPubDate(String pubDate) {
this.pubDate = pubDate;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getContent() {
return content + " got null here ";
}
public void setContent(String content) {
this.content = content;
}
}
这是NewsMainActivity.java的代码
package com.samir;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
public class NewsMainActivity extends Activity implements OnItemClickListener {
ListView listview;
List<NewsBean> arrayList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initComponents();
if (Utils.isNetworkAvailable(this)) {
new MyRssReadTask()
.execute("http://feeds.feedburner.com/Talk_Android");
} else {
Toast.makeText(this, "No Network Connection!!!", Toast.LENGTH_SHORT)
.show();
}
}
private void initComponents() {
listview = (ListView) findViewById(android.R.id.list);
listview.setOnItemClickListener(this);
}
class MyRssReadTask extends AsyncTask<String, Void, Void> {
ProgressDialog waitingDialog;
@Override
protected void onPreExecute() {
waitingDialog = new ProgressDialog(NewsMainActivity.this);
waitingDialog.setMessage("Loading...");
waitingDialog.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(String... urls) {
arrayList = new NewsParser().getData(urls[0]);
return null;
}
@Override
protected void onPostExecute(Void result) {
waitingDialog.dismiss();
setDataToListView();
super.onPostExecute(result);
}
}
protected void setDataToListView() {
if (null != arrayList && arrayList.size() != 0) {
NewsRowAdapter objNewsRowAdapter = new NewsRowAdapter(
NewsMainActivity.this, R.layout.row, arrayList);
listview.setAdapter(objNewsRowAdapter);
} else {
showToast("Error in geting Data From WebService!");
}
}
void showToast(String msg) {
Toast.makeText(NewsMainActivity.this, msg, Toast.LENGTH_SHORT).show();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// do description showing work here
final NewsBean objBean = (NewsBean) arrayList.get(position);
Intent intent = new Intent(NewsMainActivity.this,
NewsDetail.class);
intent.putExtra("title", objBean.getTitle());
intent.putExtra("description", objBean.getDescription());
intent.putExtra("content", objBean.getContent());
// String encodedurl = null;
// try {
// encodedurl = URLEncoder.encode(objBean.getDescription(),"UTF-8");
// } catch (UnsupportedEncodingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// intent.putExtra("content",encodedurl );
//
startActivity(intent);
}
} //NewsMain ends
这是NewsDetail.java的代码
package com.samir;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class NewsDetail extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.detail);
Bundle b = this.getIntent().getExtras();
String title = b.getString("title");
String desc = b.getString("description");
String cont = b.getString("content");
// String content = getIntent().getStringExtra("content");
TextView tvtitle = (TextView) findViewById(R.id.tvtitle);
TextView tvdesc = (TextView) findViewById(R.id.tvdesc);//USED FOR CONTENT RIGHT NOW
tvtitle.setText(title);
tvdesc.setText(cont);
// tvdesc.setText(content);
//tvdate.setText(Utils.getDateFormate(date));
setTitle(title);
}
}
提前谢谢你!
【问题讨论】:
-
除了这段代码使用的库之外,还有其他方法吗?