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