как работают сохраненные истории в приложении CNN для Android?

В приложении CNN для Android есть функция сохранения новостного контента/истории на телефон, чтобы пользователь мог получить доступ к этим сохраненным историям, когда он не подключен к Интернету (т. е. в автономном режиме). Я также пытаюсь сделать что-то подобное в моем новостном приложении для Android... пожалуйста, как мне это сделать


person Isaac    schedule 10.03.2015    source источник


Ответы (1)


Ок, давай так)

1. Вам следует создать MySQLiteLoader.class, который будет расширять SQLiteOpenHelper для сохранения и загрузки newsItems.

2. База данных SQLite содержит такие столбцы: заголовок, подзаголовок, описание, изображение (BLOB), другое.

3. Добавьте метод saveSingleNew(). FeedItem.class - пример класса, который будет содержать вашу новость.

Пример :

public void addSite(FeedItem site){

    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_TITLE, site.getTitle()); // title
    values.put(KEY_SUB_TITLE, site.getSubTitle()); // subtitle
    values.put(KEY_DATE, site.getDate()); // date
    values.put(KEY_IMG, site.getImg()); // img to byte[]
    values.put(KEY_DESCRIPTION, site.getSubTitle()); //  description

    db.close();
}

4. Создайте метод getAllNews().

Пример :

public List<FeedItem> getAllNews() {

    List<FeedItem> items = new ArrayList<>();


    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(TABLE_NEWS, null, null, null, null, null, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            FeedItem item = new FeedItem();
            item.setItemId(Integer.parseInt(cursor.getString(0))); //Item id.
            item.setTitle(cursor.getString(1));
            item.setSubTitle(cursor.getString(2));
            item.setDate( cursor.getString(3));
            byte [] b = cursor.getBlob(1);
            Drawable image = new BitmapDrawable(BitmapFactory.decodeByteArray(b, 0, b.length));
            item.setDrawableId(image);
            item.setImageBlob(cursor.getString(4));
            item.setDescription(cursor.getString(5)); // description.

            items.add(item);
        } while (cursor.moveToNext());
    }
    cursor.close();
    db.close();

    // return news list
    return items;

}

5. Сделайте MyCustomAdapter(ArrayList<FeedItems>);, чтобы показать наши новости в списке.

Пример: адаптер пользовательского списка

Используйте метод getAllNews(), чтобы получить сохраненный список массивов новостей в пользовательский адаптер.

Добавьте кнопку SAVE.

6. Наслаждайтесь своим приложением)

person Max Vitruk    schedule 10.03.2015