¿Cómo pasar el adaptador de base de datos a otra actividad?

Tengo problemas para entender el diálogo de búsqueda en el SDK de Android.

La "actividad principal" de mi aplicación proporciona un botón. Si el usuario hace clic en este botón se llama al cuadro de diálogo de búsqueda. La búsqueda en sí se realiza en una tarea asíncrona, ya que podría necesitar algún tiempo. Hasta aquí todo bien.

La actividad principal también crea un objeto adaptador de base de datos que se utiliza para inicializar la base de datos, realizar consultas, etc. Pero, ¿cómo puedo utilizar este objeto adaptador en la actividad de búsqueda?

Actividad principal
// Init database
DatabaseAdapter dba = new DatabaseAdapter();
dba.init();
// open search dialog
if (buttonClick) onSearchRequest();

Actividad de búsqueda

  1. Obtener la intención y recibir consulta desde el cuadro de diálogo de búsqueda -> Aceptar
  2. ¿Cómo puedo volver a usar el adaptador de base de datos para realizar una consulta?

¿Tengo que crear un nuevo objeto? ¿Puedo pasar de alguna manera de la actividad min a la actividad de búsqueda, […]?

Gracias,
Roberto

Una opción sería utilizar un singleton y proporcionar acceso al DatabaseAdapter a través de un método estático. Ex:

 private static DatabaseAdapter sWritableAdapter = null; private static DatabaseAdapter sReadableAdapter = null; public static DatabaseAdapter openForReading(Context ctx) { if(sReadableAdapter == null) sReadableAdapter = new DatabaseAdapter(new DatabaseHelper(ctx).getReadableDatabase()); return sReadableAdapter; } 

o para acceso de escritura:

 public static DatabaseAdapter openForWriting(Context ctx) { if(sWritableAdapter == null) sWritableAdapter = new DatabaseAdapter(new DatabaseHelper(ctx).getWritableDatabase()); return sWritableAdapter; } 

Por lo tanto, en su actividad de búsqueda, escribiría por ejemplo:

 DatabaseAdapter adapter = DatabaseAdapter.openForReading(ctx); adapter.searchSomething(); 

Marco

Puede crear un adaptador en la clase Aplicación y retirarlo en todas sus actividades. Eso es lo que hago para mis proyectos.

 public class ApplicationClass extends Application { Adapter adapter. @Override public void onCreate(){ adapter=new Adapter(); super.onCreate(); } public Adapter getAdapter(){ return adapter; } } 

Luego llame desde Actividad:

 Adapter adapter=(ApplicationClass)getApplication().getAdapter(); 

Algo como eso. ApplicationClass es para el nombre de su aplicación. Puede ser MyAppNameApplication Debe crearlo en su paquete y luego declarar en AndroidManifest.xml

Debe implementar un ContentProvider

http://developer.android.com/guide/topics/providers/content-providers.html

Son singletons, y accesible desde (casi) en todas partes en su aplicación.

  • Ningún setter / campo para la advertencia Base de datos Firebase Recuperar datos Llenar Listview
  • ¿El uso del texto como clave principal en la tabla SQLite es incorrecto?
  • Archivo o base de datos? - Mejores prácticas para guardar objetos en dispositivos Android
  • Acceso a bases de datos en Android
  • Insertar datos en la base de datos - ¿Cuál es la mejor manera de hacerlo?
  • La columna _id no existe
  • ¿Cómo funciona la sincronización de Firebase con datos compartidos?
  • Intenta volver a abrir un objeto ya cerrado: SQLiteDatabase
  • Ejecución de varias sentencias con SQLiteDatabase.execSQL
  • Examinar la base de datos SQLite de mi aplicación para Android?
  • Sqlite Comprobar si la tabla está vacía
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.