【问题标题】:How to get the content:encoded tag in android from rss feed如何从 RSS 提要获取内容:android 中的编码标签
【发布时间】: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);
    }

}

提前谢谢你!

【问题讨论】:

标签: android rss


【解决方案1】:

尝试使用这个库。它应该非常适合您。 https://github.com/Pkmmte/PkRSS

这个 RSS 库非常易于使用,并且支持许多不同类型的提要。默认情况下,它适用于 RSS 2.0(这是您的提要使用的),因此它应该更容易。

要在后台加载和解析您的提要,代码如下所示: pkRSS.with(this).load(url).async();

然后,您可以通过各种不同的方式检索结果,例如通过回调或简单地: List articleList = PkRSS.with(this).get(url);

访问 GitHub 页面了解更多详情。我使用这个库构建了一个科技新闻应用程序,效果很好。 :D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    相关资源
    最近更新 更多