我正在创建一个应用,我希望在RecyclerView
中显示所有用户列表。用户列出来自服务器的数据。我已成功添加
RecyclerView
中的数据并且工作正常但现在我想将所有数据存储在SqliteDatabase
中且没有网络连接我想从sqlite
获取数据并在RecyclerView
中显示意味着我想要在离线模式下显示所有列表(与来自服务器相同)。
我创建了数据库,但我不知道错误在哪里,我没有得到所有数据。怎么做?
这是我的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 :(得分: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);
}
答案 1 :(得分:0)
您可以使用以下代码获取所有记录
String selectQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = DatabaseManager.getInstance().openDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);