在自定义SipmleCursorAdapter中管理DbAdapter

时间:2011-11-12 19:51:47

标签: android simplecursoradapter

我有MyCustomAdapter课程

public class MyCustomAdapter extends SimpleCursorAdapter{
}

我有另一个名为DbAdapter的类,其中我有sql查询的函数。我想访问MyCustomAdapter类中的函数

DbAdapter db                  and next I have to add 
db = new DbAdapter(this)

但它不起作用。我试过了

Contex contex
db = new DbAdapter(contex)   but then I have java.lang.NullPointerException

有没有办法在MyCustomAdapter中访问我的DbAdapter?

1 个答案:

答案 0 :(得分:0)

让您的MyCustomAdapter - 类接受Context - 对象作为参数:

public class MyCustomAdapter extends SimpleCursorAdapter{

  private final Context context;

  public MyCustomAdapter(Context c){
   this.context = c;
  }

}

在调用活动中,您可以简单地将this传递给上下文。


您收到此错误是因为DVM尝试调用SimpleCursorAdapter(Context) - 构造函数,该构造函数不存在。

您的问题的解决方案是使用SimpleCursorAdapter显式调用super(...)的有效构造函数,或者使MyCursorAdapter - 构造函数接受与SimpleCursorAdapter之一相同的参数} -constructors。

什么方法可以依赖于你想要用Cursor-adapter做什么。如果你有某些构造函数参数的常量值,你可以使用它们,如果你没有,你需要将它们包含在MyCursorAdapter - 构造函数中。

例如,假设您没有任何构造函数参数的常量值:

public class MyCustomAdapter extends SimpleCursorAdapter{

  private final Context context;

  public MyCustomAdapter(Context context, int layout, Cursor c, String[] from, int[] to){
   super(Context context, int layout, Cursor c, String[] from, int[] to); // Call the super-
                                                                        // classes constructor
   this.context = context; // Save the context for further use
  }

}

可能会发现有关此问题的更多信息here