entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Base de datos Android

Hola, soy nuevo en esta comunidad.

Necesito ayuda para lo siguiente, tengo hecha una consulta con Cursor en mi base de datos, necesito saber como poder ponerla en un textview.
El ideal es que me muestre los datos de la consulta uno a uno y pase mediante un botón.

activity_preguntas.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.full.definitivo.test.proyect.tovi.a713.Preguntas">

    <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/progressBar" android:layout_alignParentTop="true" android:layout_marginTop="30dp" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:max="50" android:progress="1" android:indeterminate="false"/>

    <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/checkBox" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginBottom="210dp" android:checked="false"/>

    <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/checkBox2" android:checked="false" android:layout_alignTop="@+id/checkBox" android:layout_centerHorizontal="true"/>

    <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/checkBox3" android:layout_alignBottom="@+id/checkBox2" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:checked="false"/>

    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="SI" android:id="@+id/textView2" android:layout_below="@+id/checkBox2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"/>

    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="NO SE" android:id="@+id/textView3" android:layout_below="@+id/checkBox2" android:layout_centerHorizontal="true"/>

    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceSmall" android:text="NO" android:id="@+id/textView4" android:layout_below="@+id/checkBox3" android:layout_alignParentRight="true" android:layout_alignParentEnd="true"/>

    <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Continuar" android:id="@+id/button2" android:layout_alignParentBottom="true" android:layout_marginBottom="80dp" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"/>

    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView" android:layout_below="@+id/progressBar" android:layout_centerHorizontal="true" android:layout_marginTop="60dp"/>

</RelativeLayout>

Preguntas.java

public class Preguntas extends AppCompatActivity {
    private TextView textView;
    private SQLiteDatabase mydatabase;
    private DataBaseAccess open;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preguntas);
        TextView g = (TextView) findViewById(R.id.textView);

    }

    public void openDataBase() throws SQLException {
        String mypath = "/data/data/com.full.definitivo.test.proyect.tovi.a713/" + "tovi_database";
        mydatabase = SQLiteDatabase.openDatabase(mypath, null, SQLiteDatabase.OPEN_READONLY);
    }

    public void close() {
        mydatabase.close();
    }

    //Parámetro en base al cual se hará la consulta.
    String[] parámetro = new String[]{"Comunicaciones"};

    //Consulta a la base de datos.
    public Cursor preguntas () {
        return mydatabase.rawQuery("Select pregunta_name from pregunta_database as p" +
                " inner join orientacion_database as o on p.orientacion_id = o.orientacion_id where o.orientacion_name = ?", parámetro);
    }

2 Respuestas

1voto

x4mp73r Puntos13390

Intenta algo así(En este ejemplo es muy sencillo, espero y te sirva):

 Cursor consulta=db.rawQuery("select * from alumnos", null);
preguntaName.setText("");
consulta.moveToFirst(); 
 String nombre=consulta.getString(c.getColumnIndex("nombre"));
preguntaName.setText("Hola "+nombre);

1voto

Shaka_DIocares comentado

No me funciona, tira error sobre todos los métodos "set" y "get", eso es lo que me viene clavando hace rato. Gracias igualmente.

1voto

x4mp73r Puntos13390

Ok, que te parece si te muestro un ejemplo completo, la idea es mostrar todas tus preguntas en un ListView, para mí es un ejemplo muy claro y súper práctico(Poco código y muy entendible, además en lo personal es mas estético mostrar datos en un lista que en textviews :

Creamos el DBadapter:

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class PreguntasDbAdapter{

   /**
    * Definimos constante con el nombre de la tabla
    */
   public static final String C_TABLA = "PREGUNTAS" ;

   /**
    * Definimos constantes con el nombre de las columnas de la tabla
    */
   public static final String C_COLUMNA_ID   = "_id";
   public static final String C_COLUMNA_TITULO = "preg_nombre";
   public static final String C_COLUMNA_DESCRIPCION = "preg_condiciones";

   private Context contexto;
   private PreguntasDbHelper dbHelper;
   private SQLiteDatabase db;

   /**
    * Definimos lista de columnas de la tabla para utilizarla en las consultas a la base de datos
    */
   private String[] columnas = new String[]{ C_COLUMNA_ID, C_COLUMNA_TITULO, C_COLUMNA_DESCRIPCION} ;

   public PreguntasDbAdapter(Context context)
   {
      this.contexto = context;
   }

   public PreguntasDbAdapter abrir() throws SQLException
   {
      dbHelper = new PreguntasDbHelper(contexto);
      db = dbHelper.getWritableDatabase();
      return this;
   }

   public void cerrar()
   {
      dbHelper.close();
   }

   /**
    * Devuelve cursor con todos las columnas de la tabla
    */
   public Cursor getCursor() throws SQLException
   {
      Cursor c = db.query( true, C_TABLA, columnas, null, null, null, null, null, null);

      return c;
   }
}

Definimos la clase PreguntasCursorAdapter que utilizaremos desde la Activity Preguntas para alimentar el ListView con los datos obtenidos a través de la clase PreguntasDbAdapter.

import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.TextView;

public class PreguntasCursorAdapter extends CursorAdapter
{

   private PreguntasDbAdapter dbAdapter = null ;

   public PreguntasCursorAdapter (Context context, Cursor c)
   {
      super(context, c);
      dbAdapter = new PreguntasDbAdapter (context);
      dbAdapter.abrir();
   }

   @Override
   public void bindView(View view, Context context, Cursor cursor)
   {
      TextView tv = (TextView) view ;

      //Aquí hace la consulta y le pasa el resultado al tv
      tv.setText(cursor.getString(cursor.getColumnIndex(PreguntasDbAdapter .C_COLUMNA_DESCRIPCION)));
   }

   @Override
   public View newView(Context context, Cursor cursor, ViewGroup parent)
   {
      final LayoutInflater inflater = LayoutInflater.from(context);
      final View view = inflater.inflate(android.R.layout.simple_dropdown_item_1line, parent, false);

      return view;
   }
}

Layout donde estará la lista ActivityPreguntas:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".Preguntas">

    <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content">

    <TextView android:id="@id/android:empty" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Lista vacía">

</LinearLayout>

Conectar la ListActivity con la BD:

Modificamos la Activity principal de la aplicación para que herede de ListActivity, ya que simplificará el tratamiento de la lista en próximas modificaciones.
En el método onCreate obtenemos la referencia a la ListView incluida en el layout y creamos y preparamos el adaptador dbAdapter para gestionar las operaciones sobre la entidad PREGUNTAS en la base de datos SQLite.
El método consultar() se encargará de vincular el CursorAdapter preguntasAdapter a la ListView lista.

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ListView;

public class Preguntas extends ListActivity {

   private PreguntasDbAdapter dbAdapter;
    private Cursor cursor;
    private PreguntasCursorAdapter preguntasAdapter ;
    private ListView lista;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_preguntas);

      lista = (ListView) findViewById(android.R.id.list);

      dbAdapter = new PreguntasDbAdapter (this);
      dbAdapter.abrir();

      consultar();
   }

   private void consultar()
   {
      cursor = dbAdapter.getCursor();
      startManagingCursor(cursor);
      preguntasAdapter = new PreguntasCursorAdapter (this, cursor);
      lista.setAdapter(preguntasAdapter );
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.hipoteca, menu);
      return true;
   }
}

Nota:

Este ejemplo lo cree a partir de este tutorial, hay que recordar que solo es consulta de datos ya que tu pregunta solo es de mostrar datos, si deseas ver el ejemplo completo con creación de db, insertar y consultar click aquí.

También el creador tiene su proyecto completo en GiHub

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta