【问题标题】:Retrieving DB information using RecyclerView and Fragments使用 RecyclerView 和 Fragments 检索数据库信息
【发布时间】:2016-11-19 11:29:11
【问题描述】:
  1. 如何使用“getCategories()”检索 CategoryListFragment 中的数据? 我在 MyDBHelper 中有 GetAllValues() 函数,但不确定如何使用它@fragments 类,因为尝试时无法正确初始化 MyDBHelper 对象。

MyDBHelper.class

public class MyDatabaseHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME="CategoryDatabase";

public MyDatabaseHelper(Context context) {

    super(context, DATABASE_NAME, null, 1);

}

@Override

public void onCreate(SQLiteDatabase database) {

    database.execSQL("CREATE TABLE Category (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    db.execSQL("DROP TABLE IF EXISTS Category");

    onCreate(db);

}

public void addCategory(String name)

{

    ContentValues values=new ContentValues(1);

    values.put("name", name);

    getWritableDatabase().insert("Category", "name", values);

}

public Cursor getCategories()

{

    Cursor cursor = getReadableDatabase().rawQuery("select * from Category", null);

    return cursor;

}

public ArrayList<String> GetAllValues()
{
    String aTable = "Category"; // Table's name
    ArrayList<String> list = new ArrayList<String>();
    Cursor cursor =  getCategories();
    if (cursor.moveToFirst())
    {
        do
        {
            list.add(cursor.getString(0));
        }
        while (cursor.moveToNext());
    }
    if (cursor != null && !cursor.isClosed())
    {
        cursor.close();
    }

    return list;
}
}

【问题讨论】:

标签: android sqlite android-fragments


【解决方案1】:

在你的片段类中像这样初始化 MyDatabaseHelper 对象

MyDatabaseHelper dbHelper = new MyDatabaseHelper(getActivity()); 

然后在 getCategories 方法中像这样获取它

ArrayList<String> list = dbHelper.GetAllValues();

编辑:

public ArrayList<String> GetAllValues()
{
String aTable = "Category"; // Table's name
ArrayList<Category> list = new ArrayList<>();
Cursor cursor =  getCategories();
if (cursor.moveToFirst())
{
    do
    {
       Category cat  = new Category(cursor.getString(0));
        list.add(cat);
    }
    while (cursor.moveToNext());
}
if (cursor != null && !cursor.isClosed())
{
    cursor.close();
}

return list;
}

编辑 2: 尝试添加这样的片段

getSupportFragmentManager().beginTransaction().replace(R.id.test_container, fragment, "CategoryFragment").commit();

【讨论】:

  • 它有效,但现在 getCategories () 返回带有字符串的 ArrayList,而不是 Categories(对象),那么我应该如何操作我的 CategoryAdapter 以使其仍然运行? - 第一天的学习片段,我不想弄乱我的适配器,所以如果你能帮助我,那就太好了。
  • 我编辑了我的答案。如果它在某种程度上对您有帮助,我可以投票。谢谢
  • 谢谢。你能帮我解决第二个问题吗?
  • 你能给我2.问题的完整代码吗?现在,它缺少“片段”参数。
  • 这将是您的 CategoryListFragment 片段 = new CategoryListFragment();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多