I searched a lot, but did not find step-by-step tutorials on how to display SQLite data in RecyclerView. Can someone explain to me how I can do this?
My 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(); } } }
Your answers will be really useful to me, thanks
EDIT:
DataBean Class:
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; }
}
I add these lines to my 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; }
And the last question? Do I need to change the insert data in a DataBaseAdapter ?
EDIT 2:
I added this code to my 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; }