我有RecyclerView
GridView
,我想从我的数据库中显示食谱。我真的很感激有关如何做到这一点的任何帮助。
MyDBHandler:
public class MyDBHandler extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Recipes.db";
public static final String TABLE_RECIPE = "recipe_table";
public static final String COLUMN_ID = "recipe_id";
public static final String COLUMN_RECIPENAME = "recipe_name";
public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + TABLE_RECIPE + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_RECIPENAME + " TEXT " +
");";
db.execSQL(query);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " +TABLE_RECIPE);
onCreate(db);
}
//Add new row to database
public void addRecipe(Recipe recipe){
ContentValues values = new ContentValues();
values.put(COLUMN_RECIPENAME, recipe.getRecipename());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_RECIPE, null, values);
db.close();
}
public void deleteRecipe(String recipeId){
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM" + TABLE_RECIPE + " WHERE " + COLUMN_ID + "=\"" + recipeId + "\";" );
}
}
在我的onCreate
myRecipes.java
我有:
RecyclerView myrv = findViewById(R.id.myrecipes_recyclerview);
RecyclerViewAdapter myAdapter = new RecyclerViewAdapter(this, list);
myrv.setLayoutManager(new GridLayoutManager(this, 2));
myrv.setAdapter(myAdapter);
答案 0 :(得分:0)
要从数据库中获取数据,您需要先在MyDBHandler.class中编写一个方法来获取数据。
public List<Recipe> getRecipes() {
String fetchQuery = "SELECT * from " + TABLE_RECIPE; // sql query to fetch data
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(fetchQuery, null);
List<Recipe> recipes = new ArrayList<>();
while(cursor.moveToNext()) {
Recipe recipe = new Recipe();
String fetchedRecipe =
cursor.getString(cursor.getColumnIndex(COLUMN_RECIPENAME));
recipe.setRecipe(fetchedRecipe); // This should be a method in your Recipe.class to set the value for the object
recipes.add(recipe);
}
cursor.close();
db.close();
return recipes;
}
既然我们有一个方法可以为我们获取所需的数据,我们需要调用它使用它的结果显示在RecyclerView中。
在onCreate()
的{{1}}中,创建数据库的实例。
myRecipes.java