2011-01-10 62 views
5

我有几个RSS源需要为我的应用程序解析,我遵循这里的优秀教程:http://w2davids.wordpress.com/android-rssatom-feeds-parsing-with-rome /。我修改了一下这个例子,并且让它做了我所需要的。所以,我将它整合到我的应用程序中,并且每次尝试显示帖子列表时都始终强制退出。我的修改版本的代码如下。将适配器连接到ListView时总会失败,所以我认为我的适配器安装不正确。奇怪的是,在调试器中,我可以查看适配器并查看我想要获取的数据。在Android上解析RSS

在此先感谢:

public class View1 extends Activity 
{ 
    /** Called when the activity is first created. */ 
    private final ArrayList<String> list = new ArrayList<String>(); 
    private ListView listView; 
    private ArrayAdapter<String> adapter = null; 
    private SyndContent desc; 
    private ArrayList<String> d = new ArrayList<String>() ; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      adapter = new ArrayAdapter<String>(this, R.layout.dataview, R.id.ListItemView);    
      getRSS("http://www.example.com/wp/?feed=gigpress&artist=1"); 
      listView.setAdapter(adapter); 


      listView = (ListView) this.findViewById(R.id.ListView); 

      listView.setOnItemClickListener(new OnItemClickListener() 
       { 
        @Override 
        public void onItemClick(AdapterView<?> parent, View view, int position, long duration) 
         {        
          Intent intent = new Intent(); 
          intent.setClassName("com.example.idtb", "com.example.idtb.ViewRssDescription"); 
          intent.putExtra("desc", d.get(position)); 
          startActivity(intent); 
         } 
       });    

     } 

    private void getRSS(String rss) 
     { 

      URL feedUrl; 
      try 
       { 
        Log.d("DEBUG", "Entered:" + rss); 
        feedUrl = new URL(rss); 

        SyndFeedInput input = new SyndFeedInput(); 
        SyndFeed feed = input.build(new XmlReader(feedUrl)); 
        List entries = feed.getEntries(); 

        Iterator iterator = entries.listIterator(); 
        while (iterator.hasNext()) 
         { 
          SyndEntry ent = (SyndEntry) iterator.next(); 
          String title = ent.getTitle(); 
          desc = ent.getDescription(); 
          d.add(desc.getValue()); 
          adapter.add(title); 
         } 
        adapter.notifyDataSetChanged(); 

       } 
      catch (MalformedURLException e) 
       { 
        e.printStackTrace(); 
       } 
      catch (IllegalArgumentException e) 
       { 
        e.printStackTrace(); 
       } 
      catch (FeedException e) 
       { 
        e.printStackTrace(); 
       } 
      catch (IOException e) 
       { 
        e.printStackTrace(); 
       } 
     } 
} 
+0

最终找到了问题...福利局错误引用了错误的内容查看和抓错了控制ID 。废话。 – voodoobilly 2011-01-11 23:06:19

回答

1

我觉得适配器应当是这个样子:

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lst);