onItemClick открытие URL из RSS-канала - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть RSS-канал, проанализированный в виде списка в моем приложении. Я пытаюсь заставить его тянуть ссылку для каждого элемента в rss и открывать его, когда я нажимаю на элемент в списке. в основном у меня уже есть все, но я не уверен, какую кодировку использовать после этого утверждения.

public void onItemClick (родительский элемент AdapterView, представление View, позиция int, длинный идентификатор) {

Я знаю, что именно здесь мой код должен открывать URL-адрес, сохраненный в файле rss, но не знаю, как его получить отсюда. Любая помощь с благодарностью.

открытый класс MainActivity расширяет Activity, реализует OnItemClickListener {

//RSS Feed URL
private final String CGR_FEED_URL = "http://www.mychurchevents.com/Calendar/RSS.ashx?days=7&ci=G1M7G1N8K5G1N8N8H2&igd=";

//XML Widgets
private ListView listview_episodes;
private ProgressBar progress_bar;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //XML Widgets by ID
    listview_episodes = (ListView) findViewById(R.id.listview_episodes);
    listview_episodes.setOnItemClickListener(this);
    progress_bar = (ProgressBar) findViewById(R.id.progress_bar);
    //Make Progress Bar Invisible
    progress_bar.setVisibility(ProgressBar.INVISIBLE);

    new ArrayList<String>();
    new ArrayList<String>();


    downloadEpisodes(CGR_FEED_URL);

}

private void downloadEpisodes(String Url) {
    //Make Progress Bar Visible While Downloading Feed
    progress_bar.setVisibility(ProgressBar.VISIBLE);
    Log.d("CGRParser", "Downloading Feed");
    //Start an ASync Thread to take care of Downloading Feed
    new DownloadEpisodes().execute(Url);
}

private class DownloadEpisodes extends AsyncTask<String, Integer, ArrayList<Episode>> {

    @Override
    protected ArrayList<Episode> doInBackground(String... url) {

        //Download and Parse Feed
        XmlFeedParser parser = new XmlFeedParser();
        ArrayList<Episode> episodes = new ArrayList<Episode>();
        episodes = parser.parse(url[0]);

        return episodes;
    }

    @Override
    protected void onPostExecute(ArrayList<Episode> result) {

        //Feed has been Downloaded and Parsed, Display Data to User
        Log.d("CGRParser", "Feed Download Complete");
        displayEpisodes(result);

    }

}

private void displayEpisodes(ArrayList<Episode> episodes) {

    //Create String Arrays to seperate titles and dates
    Log.d("CGRParser", "Displaying Episode Titles To User");
    ArrayList<String> episode_titles = new ArrayList<String>();
    ArrayList<String> episode_dates = new ArrayList<String>();
    for (Episode episode : episodes) {
        Log.d("CGRParser", "Episode Title: " + episode.getTitle());
        episode_titles.add(episode.getTitle());
        episode_dates.add(episode.getDate());
    }

    //Create a ListAdapter to Display the Titles in the ListView
    ListAdapter adapter = new ArrayAdapter<String>(this, R.layout.episode_row, R.id.title, episode_titles);
    listview_episodes.setAdapter(adapter);

    //Set Progress Bar Invisible since we are done with it
    progress_bar.setVisibility(ProgressBar.INVISIBLE);

}

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {




}

} `

1 Ответ

1 голос
/ 14 февраля 2012

Я бы просто настаивал на том, чтобы пройти this Tutorial, загрузить полный исходный код и заставить его работать.Это прояснит ваши запросы о том, как это работает, а также включает несколько XML Parser (SAX, DOM, XmlPullParser, некоторые другие) , которые вы узнаете.

ОБНОВЛЕНИЕ:

Вы можете использовать getSelectedItemPosition() и получить выбранное значение из ListView.А затем выполните дальнейший процесс показа RSS.

public void onItemClick(AdapterView<?> parent, View view, int position,
                                                                      long id) {
            // get the selected item and do the further process
            listview.getItemAtPosition(position); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...