这是我的类,我想从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类或其子对象。 ActivityContext的子类,而其他类则不是。要解决此问题,您可以在创建适配器对象时将上下文传递给它:

public CardAdapter(Context context) {
    ...

    DatabaseAccess databaseAccess = DatabaseAccess.getInstance(context);

07-27 13:22