这是我的类,我想从DatabaseAccess类调用方法:
public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
List<Person> mItems;
public Context context;
private static SQLiteDatabase database;
private SQLiteOpenHelper openHelper;
public CardAdapter() {
super();
DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);
databaseAccess.open();
List<String> kandidatet = DatabaseAccess.getKandidatet();
database.close();
Person p;
mItems = new ArrayList<>();
for (int i = 0; i < kandidatet.size(); i++) {
p = new Person();
p.setName(kandidatet.get(i));
mItems.add(p);
}
.....
....
...
}
错误在此行中:
DatabaseAccess databaseAccess = DatabaseAccess.getInstance(this);
这是类DatabaseAccess中的方法:
private DatabaseAccess(Context context) {
this.openHelper = new DatabaseOpenHelper(context);
}
它不接受“ this”作为上下文
如何解决这个问题?
最佳答案
这是因为this
必须引用Context
类或其子对象。 Activity
是Context
的子类,而其他类则不是。要解决此问题,您可以在创建适配器对象时将上下文传递给它:
public CardAdapter(Context context) {
...
DatabaseAccess databaseAccess = DatabaseAccess.getInstance(context);