Affichage de données SQLite dans RecyclerView

Je recherche beaucoup, mais je n'en trouvais pas, étape par étape, des guides sur la façon d'afficher les données SQLite dans RecyclerView. Quelqu'un peut-il m'expliquer comment puis-je faire cela?

Mon DataBaseAdapter :

public class DataBaseAdapter {
DataBaseHelper helper;
public DataBaseAdapter(Context context) {
helper = new DataBaseHelper(context);
}
public long insertData(String name, String card, String code) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(DataBaseHelper.NAME, name);
contentValues.put(DataBaseHelper.CARD, card);
contentValues.put(DataBaseHelper.CODE, code);
long id = db.insert(DataBaseHelper.TABLE_NAME, null, contentValues);
return id;
}
public String getData(String name){
//select _id,Name,Card,Code
SQLiteDatabase db = helper.getWritableDatabase();
String[] columns = {DataBaseHelper.NAME, DataBaseHelper.CARD, DataBaseHelper.CODE};
Cursor cursor = db.query(DataBaseHelper.TABLE_NAME, columns,DataBaseHelper.NAME+" = '"+name+"'", null, null, null, null);
StringBuffer buffer = new StringBuffer();
while (cursor.moveToNext()) {
int index2 = cursor.getColumnIndex(DataBaseHelper.NAME);
int index3 = cursor.getColumnIndex(DataBaseHelper.CARD);
int index4 = cursor.getColumnIndex(DataBaseHelper.CODE);
String personName = cursor.getString(index2);
String card = cursor.getString(index3);
String code = cursor.getString(index4);
buffer.append(name + " " + card + " " + code + "\n");
}
return buffer.toString();
}
public String getAllData() {
//select _id,Name,Card,Code
SQLiteDatabase db = helper.getWritableDatabase();
String[] columns = {DataBaseHelper.UID, DataBaseHelper.NAME, DataBaseHelper.CARD, DataBaseHelper.CODE};
Cursor cursor = db.query(DataBaseHelper.TABLE_NAME, columns, null, null, null, null, null);
StringBuffer buffer = new StringBuffer();
while (cursor.moveToNext()) {
int index1 = cursor.getColumnIndex(DataBaseHelper.UID);
int index2 = cursor.getColumnIndex(DataBaseHelper.NAME);
int index3 = cursor.getColumnIndex(DataBaseHelper.CARD);
int index4 = cursor.getColumnIndex(DataBaseHelper.CODE);
int cid = cursor.getInt(index1);
String name = cursor.getString(index2);
String card = cursor.getString(index3);
String code = cursor.getString(index4);
buffer.append(cid + " " + name + " " + card + " " + code + "\n");
}
return buffer.toString();
}
static class DataBaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "cardsdatabase";
private static final String TABLE_NAME = "CARDSTABLE";
private static final String UID = "_id";
private static final String NAME = "Name";
private static final String CARD = "Card";
private static final String CODE = "Code";
private static final int DATABASE_VERSION = 1;
private static final String CREATE_TABLE = "create table "
+ TABLE_NAME + " (" + UID
+ " integer primary key autoincrement, " + NAME
+ " text not null, " + CARD + " ext not null, " + CODE
+ " text not null);";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS "
+ TABLE_NAME;
private Context context;
public DataBaseHelper(Context context) {
super(context, DataBaseHelper.DATABASE_NAME, null, DataBaseHelper.DATABASE_VERSION);
this.context = context;
Toast toast = Toast.makeText(context, "constructor called", Toast.LENGTH_LONG);
toast.show();
}
@Override
public void onCreate(SQLiteDatabase db) {
//CREATE TABLE CARDSTABLE(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(255));
try {
db.execSQL(CREATE_TABLE);
Toast toast = Toast.makeText(context, "onCreate called", Toast.LENGTH_LONG);
toast.show();
} catch (SQLException e) {
Toast toast = Toast.makeText(context, "" + e, Toast.LENGTH_SHORT);
toast.show();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
Toast toast = Toast.makeText(context, "onUpgrade called", Toast.LENGTH_LONG);
toast.show();
db.execSQL(DROP_TABLE);
onCreate(db);
} catch (SQLException e) {
Toast toast = Toast.makeText(context, "" + e, Toast.LENGTH_LONG);
toast.show();
}
}
}

Vos réponses sera vraiment utile pour moi, merci

EDIT:

DataBean classe :

public class DataBean {
//private variables
int _id;
String _name;
String _card_value;
String _card_code;
//Empty constructor
public DataBean(){
}
//constructor
public DataBean(int id, String name, String _card_value, String _card_code){
this._id = id;
this._name = name;
this._card_value = _card_value;
this._card_code = _card_code;
}
//constructor
public DataBean(String name, String _card_value, String _card_code){
this._name = name;
this._card_value = _card_value;
this._card_code = _card_code;
}
//getting ID
public int getID(){
return this._id;
}
//setting id
public void setID(int id){
this._id = id;
}
//getting name
public String getName(){
return this._name;
}
//setting name
public void setName(String name){
this._name = name;
}
//getting CardValue
public String getCardValue(){
return this._card_value;
}
//setting CardValue
public void setCardValue(String _card_value){
this._card_value = _card_value;
}
//getting CardCode
public String getCardCode(){
return this._card_code;
}
//setting CardCode
public void setCardCode(String _card_code){
this._card_code = _card_code;
}

}

Ces lignes-je ajouter à mon DataBaseAdapter:

public DataBean getDat(String name){
DataBean bean=null;
SQLiteDatabase db=this.getReadableDatabase();
String[] columns = {DataBaseHelper.NAME, DataBaseHelper.CARD, DataBaseHelper.CODE};
Cursor cursor = db.query(DataBaseHelper.TABLE_NAME, columns,DataBaseHelper.NAME+" = '"+name+"'", null, null, null, null);
if (cursor.moveToFirst()) {
int index = cursor.getColumnIndex(DataBaseHelper.UID);
int index2 = cursor.getColumnIndex(DataBaseHelper.NAME);
int index3 = cursor.getColumnIndex(DataBaseHelper.CARD);
int index4 = cursor.getColumnIndex(DataBaseHelper.CODE);
int id = cursor.getInt(index);
String personName = cursor.getString(index2);
String card = cursor.getString(index3);
String code = cursor.getString(index4);
bean = new DataBean(id, name, card, code);
}
return bean;
}
public List<DataBean> gelAllDat(){
List<DataBean> list = new ArrayList<>();
SQLiteDatabase db=this.getReadableDatabase();
String[] columns = {DataBaseHelper.NAME, DataBaseHelper.CARD, DataBaseHelper.CODE};
Cursor cursor = db.query(DataBaseHelper.TABLE_NAME, columns,DataBaseHelper.NAME, null, null, null, null);
while (cursor.moveToNext()) {
int index = cursor.getColumnIndex(DataBaseHelper.UID);
int index2 = cursor.getColumnIndex(DataBaseHelper.NAME);
int index3 = cursor.getColumnIndex(DataBaseHelper.CARD);
int index4 = cursor.getColumnIndex(DataBaseHelper.CODE);
int cid = cursor.getInt(index);
String name = cursor.getString(index2);
String card = cursor.getString(index3);
String code = cursor.getString(index4);
DataBean bean = new DataBean(cid, name, card, code);
list.add(bean);
}
return list;
}

Et dernière question? J'ai besoin de changer mon insérer des données dans DataBaseAdapter?

EDIT 2:

J'ai ajouté ce code à mon DataBaseAdapter:

public List<DataBean> getAllCards(){
List<DataBean> list=new ArrayList<>();
String query = "SELECT  * FROM " + DataBaseHelper.TABLE_NAME;
SQLiteDatabase db = helper.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
while (cursor.moveToNext()) {
//int index = cursor.getColumnIndex(DataBaseHelper.UID);
int index2 = cursor.getColumnIndex(DataBaseHelper.NAME);
int index3 = cursor.getColumnIndex(DataBaseHelper.CARD);
int index4 = cursor.getColumnIndex(DataBaseHelper.CODE);
//int cid = cursor.getInt(index);
String name = cursor.getString(index2);
String card = cursor.getString(index3);
String code = cursor.getString(index4);
DataBean bean = new DataBean(name, card, code);
list.add(bean);
}
return list;
}
public DataBean getData(String name) {
//select _id,Name,Card,Code
SQLiteDatabase db = helper.getReadableDatabase();
String[] columns = {DataBaseHelper.NAME, DataBaseHelper.CARD, DataBaseHelper.CODE};
DataBean bean=null;
Cursor cursor = db.query(DataBaseHelper.TABLE_NAME, columns, DataBaseHelper.NAME + " = '" + name + "'", null, null, null, null);
StringBuffer buffer = new StringBuffer();
while (cursor.moveToNext()) {
int index2 = cursor.getColumnIndex(DataBaseHelper.NAME);
int index3 = cursor.getColumnIndex(DataBaseHelper.CARD);
int index4 = cursor.getColumnIndex(DataBaseHelper.CODE);
String personName = cursor.getString(index2);
String card = cursor.getString(index3);
String code = cursor.getString(index4);
//buffer.append(name + " " + card + " " + code + "\n");
bean = new DataBean( name,card, code);
}
return bean;
}
Vous coulez Cursor objets dans la plupart de vos méthodes qui les utilisent. S'il vous plaît fermer la Cursor lorsque vous avez terminé avec elle. Au-delà, il n'y a pas de code dans la liste ci-dessus qui permettrait de créer quelque chose qui pourrait être affiché dans tous les AdapterView (par exemple, ListView) ou RecyclerView. Vous allez avoir besoin d'avoir une certaine structure de données qui représente une collection de modèle de données (par exemple, ArrayList de Pojo, Cursor). Une fois que vous avez créé, revenir ici pour vous renseigner sur la façon de mettre que le modèle de données dans un RecyclerView, donc nous savons ce que la structure du modèle de données.
Est-il obligatoire pour vous d'utiliser SQLite? Il a beaucoup trop de code réutilisable, si elle n'est pas obligatoire, vérifier ma réponse ici qui traite de la façon de remplir RecyclerView de base de données, en quelques lignes, avec le Royaume stackoverflow.com/questions/26517855/...
merci pour responce, ill essayer!

OriginalL'auteur Ololoking | 2015-02-03