【发布时间】:2020-01-12 09:07:44
【问题描述】:
在我的应用程序中,我有一个 TabLayout,每个选项卡都由一个片段表示。我在数据库中有几个表。对于每个表,我想要一个显示表内容列表的选项卡。要访问数据库,我需要传入一个上下文,但它只能从 MainActivity 中获得。如何从每个分片访问一个数据库实例?
这里有一些代码: ElectronicsDatabase.java
@Database(entities = {Smartphone.class, Tablet.class,
Laptop.class, VideoGameConsole.class}, version = 1)
public abstract class ElectronicsDatabase extends RoomDatabase {
public abstract SmartphoneDao getSmartphoneDao();
public abstract TabletDao getTabletDao();
public abstract LaptopDao getLaptopDao();
public abstract VideoGameConsoleDao getVideoGameConsoleDao();
private static final String DB_NAME = "products.db";
private static ElectronicsDatabase db;
public static ElectronicsDatabase getInstance(Context context)
{
if (db == null)
{
db =buildDatabaseInstance(context);
}
return db;
}
private static ElectronicsDatabase buildDatabaseInstance(Context context)
{
return Room.databaseBuilder(context, ElectronicsDatabase.class,
DB_NAME).allowMainThreadQueries().build();
}
}
在主要活动中,我像这样访问它:
db = ElectronicsDatabase
.getInstance(getApplicationContext());
【问题讨论】:
-
从你的片段中尝试
db = ElectronicsDatabase.getInstance(getContext()); -
还有如何从自定义的 ArrayAdapter 类访问这个数据库?
-
不建议在适配器中使用访问数据库,使用 viewModel 并将数据传递给适配器。
标签: java android database android-room