Разбор RSS на Android - PullRequest
       11

Разбор RSS на Android

5 голосов
/ 11 января 2011

У меня есть пара RSS-каналов, которые мне нужно проанализировать для моего приложения, и я следовал великолепному учебнику здесь: http://w2davids.wordpress.com/android-rssatom-feeds-parsing-with-rome/. Я немного изменил образец и получил его для того, что мне нужно. Итак, я пошел интегрировать его в свое приложение и последовательно получать принудительное завершение каждый раз, когда пытаюсь отобразить список сообщений. Моя модифицированная версия кода ниже. Кажется, что всегда происходит сбой при подключении адаптера к ListView, поэтому я предполагаю, что мой адаптер настроен неправильно. Что странно, что в отладчике я могу посмотреть на адаптер и посмотреть данные, которые пытаюсь получить.

Заранее спасибо:

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();
                }
        }
}

1 Ответ

1 голос
/ 11 января 2011

Я думаю, что адаптер должен выглядеть примерно так:

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lst); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...