2017-01-10 72 views
0

我正在創建一個應用程序,我想在RecyclerView中顯示所有用戶列表。用戶列出來自服務器的數據。我已成功添加 數據在RecyclerView和完美工作,但現在我想要存儲所有數據在SqliteDatabase和沒有網絡連接我想從sqlite取數據和在RecyclerView顯示意味着我想顯示在離線模式下的所有列表也(相同來自服務器)。 我已經創建了數據庫,但我不知道錯誤在哪裏,我沒有獲取所有數據。這個怎麼做?從SqliteDataBase存儲和提取數據

這裏是我的SqliteDataBase:

public long insertContact(int userId, String name, String profile, String status) { 
    long result = 0; 
    open(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put("USERID", userId); 
    contentValues.put("NAME", name); 
    contentValues.put("PROFILE", profile); 
    contentValues.put("STATUS", status); 
    result = sqLiteDataBase.insert(DATABASE_TABLE_CONTACT, null, contentValues); 
    return result; 
} 

public Cursor getallEntry() { 
    return sqLiteDataBase.query(DATABASE_TABLE_CONTACT, null, null, null, "ID", null, "ID"); 
} 

在這裏,我在課堂上打電話insertContact,ContactList包含來自服務器的數據來:

for (int i = 0; i < contactList.size(); i++) { 
    sqliteDataBase.insertContact(contactList.get(i).getId(), 
      contactList.get(i).getName(),"",status); 

我在這裏獲取的所有數據時無網絡連接:

if (cd.isConnectingToInternet()) { 
     getAllUserList(); 
    } 
    else { 
     Cursor cursor = sqliteDataBase.getallEntry(); 
} 

回答

0

在你的數據庫類

public void insertContact(ContentValues values) { 
    try { 
     SQLiteDatabase db = _dbWriteable; 
     db.insert(Your.TABLENAME, null, values); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

,並在你的活動,你在哪裏得到的服務器響應添加此方法,在這樣的分貝值插入。

ContentValues contentValues = new ContentValues(); 
    Database db = new Database(mContext); 
    for (int i = 0; i < contactList.size(); i++) { 
     contentValues.put("USERID", userId); 
     contentValues.put("NAME", name); 
     contentValues.put("PROFILE", profile); 
     contentValues.put("STATUS", status); 
     db.insertContact(values); 
    } 
0

您可以使用下面的代碼來獲取所有記錄

String selectQuery = "SELECT * FROM " + TABLE_NAME; 

SQLiteDatabase db = DatabaseManager.getInstance().openDatabase(); 
Cursor cursor = db.rawQuery(selectQuery, null);