2015-03-10 1 views
0

Sur l'application Android CNN, il existe une fonctionnalité pour enregistrer un contenu de nouvelles/histoire sur le téléphone, de sorte que l'utilisateur peut accéder à ces histoires sauvegardées lorsqu'il n'est pas connecté à Internet (ie, en mode déconnecté). aussi essayer de faire quelque chose de similaire sur mon application Android nouvelles ... s'il vous plaît comment puis-je aller sur cecomment les histoires de sauvegarde sur l'application Android CNN fonctionne?

Répondre

0

Ok, permet de le faire)

1. Vous devez créer MySQLiteLoader.class qui sera étendre SQLiteOpenHelper pour sauver et chargez newsItems.

2. La base de données SQLite contient des colonnes telles que: Titre, sous-titre, description, image (BLOB), autre.

3. Ajouter saveSingleNew() méthode. FeedItem.class - exemple de classe qui contiendra vos nouvelles.

Exemple:

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. méthode Create getAllNews().

Exemple:

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. Faire une MyCustomAdapter(ArrayList<FeedItems>); pour montrer nos nouvelles dans la liste.

Exemple: Custom list adapter

Utilisez la méthode getAllNews() pour obtenir votre liste de tableau enregistrée de nouvelles dans l'adaptateur personnalisé. Bouton

Ajouter un bouton SAVE.

6. Profitez de votre application)