SQLite数据库“上下文”传递给适配器

我已经按照本教程在我的Android应用程序中使用SQLite数据库。 因为我是初学者,所以我在理解示例中使用的“上下文”参数时遇到了问题。

我想调用适配器,并插入/更新/删除不扩展活动的类中的logging,这个例子代表上下文。

现在我不知道要在适配器中传递什么作为上下文,因为我没有从活动调用适配器。

有人可以解释一下吗?

Solutions Collecting From Web of "SQLite数据库“上下文”传递给适配器"

将ActivityName.this作为类上下文作为parameter passing给适配器类的构造函数,ActivityName是您在其中调用适配器的Activity类的名称

你可以想象,上下文定义何时/何时sqlite数据库存在。 sqlite数据库并不存在,它们存在于您的活动范围内,因此存在于您的活动的上下文中。

对于接下来的步骤,您必须了解上下文是一个dynamic的“事物”(在reallife中,您可以将其想象成某人在这里,现在)。 背景是个人的活动和时刻,就像你现在是你的和你的只是随着时间的推移而变化。

如果你正在从你的活动中调用一个类,那么这个方法就行了(从活动内部传递活动的上下文就好 – 就像你对你的朋友说的那样:这就是我现在的感受)。

public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Context contextNew = this; myClass(contextNew); 

一个简单的解决scheme(万能)将在MyActivity内部创build一个静态的Contextvariables(contextVariable),并直接通过MyActivity.contextVariable访问它。 但是这不起作用,因为当你尝试声明/使用一个静态的Contextvariables的时候会出错。

所以,如果你打算在主活动内部不调用的服务内部使用sqlite,比如像广播接收者触发的服务(服务和接收者本身都没有上下文),那么你必须从所述接收器内访问原始应用程序的上下文。

访问原始活动的上下文很简单,但很不明显。

这对我有用(thanx @ZiGi和@Cristian):

 import android.app.Service; import android.content.Context; public class BatchUploadGpsData extends Service { public Context contextNew; @Override public void onCreate() { contextNew = getApplicationContext(); 

这是工作代码的一个例子,每当Android设备连接到WIFInetworking时,导航数据上传到networking上的数据库。 我有一个接收器监听连接变化(作为一个单独的类,直接从“清单文件”中调用)。

我希望这是有道理的,如果你想了解更多的细节,请查看我的这个post ,我有完整的(准系统)代码的接收器。

正如你在例子中看到的,有一个上下文传递给ToDoAdapter。 您可以将活动作为上下文或activity.getApplicationContext()传递。 在这里阅读上下文。