База данных SQLite «контекст» передается адаптеру

Я следил за этим руководством, чтобы использовать SQLite db в моем приложении для Android. Поскольку я новичок, у меня возникают проблемы с пониманием параметра «context», используемого в примере.

Я хочу вызвать адаптер и вставить / обновить / удалить записи из класса, который не расширяет активность, которая в этом примере означает контекст.

Теперь я не знаю, что передать в адаптер как контекст, так как im не вызывает адаптер из активности.

Может кто-нибудь объяснить это?

Solutions Collecting From Web of "База данных SQLite «контекст» передается адаптеру"

Передайте значение ActivityName.this как контекст класса в качестве аргумента для конструктора класса адаптера. ActivityName – это имя Activity Activity, в котором вы вызываете адаптер

Вы можете себе представить, что контекст определяет WHERE / WHEN, когда база данных sqlite существует. Базы данных sqlite не существуют сами по себе, они существуют в рамках вашей деятельности, таким образом, в контексте вашей деятельности.

Для следующих шагов вы должны понимать, что контекст является динамическим «вещью» (в reallife вы могли бы представить его как кто-то ЗДЕСЬ и СЕЙЧАС). Контекст индивидуален для деятельности и ее момента, так же, как ваши здесь и сейчас ваши и ваши только и меняются со временем.

Если вы вызываете класс из своей деятельности, тогда это делает трюк (передача контекста активности из самой активности в порядке – сортировка, как вы говорите своему собеседнику: так я чувствую СЕЙЧАС).

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

Простым решением (panacea) было бы создать статическую переменную Context (contextVariable) внутри MyActivity и получить доступ к ней непосредственно извне через: MyActivity.contextVariable. Но это не работает, потому что вы получаете сообщение об ошибке при попытке объявить / использовать статическую переменную Context.

Итак, если вы планируете использовать 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 подключается к сети WIFI. У меня есть приемник, который прослушивает изменения связи (существующий как отдельный класс, который называется непосредственно «из» файла манифеста).

Я надеюсь, что это имеет смысл, если вы хотите получить более подробную информацию об этом, ознакомьтесь с этим сообщением, где у меня есть полный (barebone) код для упомянутого приемника.

Как вы видите в примере, есть контекст, переданный ToDoAdapter. Вы можете передавать активность как контекст или activity.getApplicationContext (). Читайте о контексте здесь .