在回收站视图中显示数据库条目

时间:2018-04-05 00:53:22

标签: java android database sqlite android-studio

我有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);

1 个答案:

答案 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
相关问题