Android RSS Parse: получить миниатюру изображения

Я пытаюсь сделать программу для чтения новостей для Android, но не могу понять, как разобрать миниатюру из каждого элемента RSS. Должен ли я вставлять каждый URL-адрес миниатюры, а затем сохранять их, чтобы использовать их, или я могу просто использовать их с URL-адресом? Это код фида

public class RssFeed implements Parcelable {`

    private String title;
    private String link;
    private String description;
    private String language;
    private ArrayList<RssItem> rssItems;

    public RssFeed() {
        rssItems = new ArrayList<RssItem>();
    }

    public RssFeed(Parcel source) {

        Bundle data = source.readBundle();
        title = data.getString("title");
        link = data.getString("link");
        description = data.getString("description");
        language = data.getString("language");
        rssItems = data.getParcelableArrayList("rssItems");

    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {

        Bundle data = new Bundle();
        data.putString("title", title);
        data.putString("link", link);
        data.putString("description", description);
        data.putString("language", language);
        data.putParcelableArrayList("rssItems", rssItems);
        dest.writeBundle(data);
    }

    public static final Parcelable.Creator<RssFeed> CREATOR = new Parcelable.Creator<RssFeed>() {
        public RssFeed createFromParcel(Parcel data) {
            return new RssFeed(data);
        }
        public RssFeed[] newArray(int size) {
            return new RssFeed[size];
        }
    };  

а это средство чтения Rss: (я также создал объект RssItem, в котором хранятся значения).

public class RssReader {

    public static RssFeed read(URL url) throws SAXException, IOException {

        return read(url.openStream());

    }

    public static RssFeed read(InputStream stream) throws SAXException, IOException {

        try {

            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser parser = factory.newSAXParser();
            XMLReader reader = parser.getXMLReader();
            RssHandler handler = new RssHandler();
            InputSource input = new InputSource(stream);

            reader.setContentHandler(handler);
            reader.parse(input);

            return handler.getResult();

        } catch (ParserConfigurationException e) {
            throw new SAXException();
        }

    }

    public static RssFeed read(String source) throws SAXException, IOException {
        return read(new ByteArrayInputStream(source.getBytes()));
    }

}

person Kredde S    schedule 05.02.2017    source источник


Ответы (1)


Я не уверен, что вы подразумеваете под разбором URL. Я думаю, у вас есть полный URL миниатюры.

Если у вас есть URL-адрес эскиза, я думаю, вы можете использовать любые библиотеки загрузки и кэширования изображений, такие как Picasso. и Glide. Они просты в использовании и делают всю тяжелую работу за вас, когда вы хотите работать с изображениями в Android.

Я использовал Picasso, и он работает так, как рекламируется. Тем не менее, я бы тоже хотел попробовать Glide из-за того, что я слышал в кругах разработчиков.

Примечание. Возможно, есть другие библиотеки, которые могут помочь вам с тем же, так что, возможно, посмотрите, что там есть и что работает для вас!

Надеюсь это поможет. Удачного кодирования!

person Narayan Acharya    schedule 05.02.2017
comment
хорошо, спасибо, но моя проблема в том, что я не знаю, как получить URL! - person Kredde S; 06.02.2017
comment
URL-адрес должен быть частью модели RssItem, верно? Поскольку вы получаете ArrayList объектов RssItem, вы можете просто использовать его оттуда! Мне нужно будет увидеть еще немного кода, если это не имеет смысла для вас, возможно, лучше объяснить. - person Narayan Acharya; 06.02.2017