Estoy tratando de llenar el listview desde mi base de datos SQLite… esto es ¿cómo puedo obtener mis datos de base de datos:

    Cursor c = database.rawQuery("SELECT * FROM " + TableName, null);
    int Column1 = c.getColumnIndex("uri");
    int Column2 = c.getColumnIndex("file");
    int Column3 = c.getColumnIndex("id");
    c.moveToFirst();
    if (c != null) {
        do {
            String uri = c.getString(Column1);
            String file = c.getString(Column2);
            int id = c.getInt(Column3);
        } while (c.moveToNext());
    }

Que normalmente debería agregar una matriz para listview como que:

    ListView my_listview2 = (ListView) findViewById(R.id.listView1);
    String my_array[] = {"Android", "iPhone"};
    my_listview2.setAdapter(new ArrayAdapter<String>(this, R.layout.row, R.id.my_custom_row, my_array));

¿Cómo puedo hacer que una matriz a setadapter de mi consulta sql?

InformationsquelleAutor Badr Hari | 2011-03-28

2 Comentarios

  1. 5

    La mejor manera de hacer esto es utilizar un CursorAdapter o un SimpleCursorAdapter. Esto le dará el mejor rendimiento y una vez que usted averiguar usted encontrará que es el enfoque más sencillo cuando se utiliza SQLite db.

    http://developer.android.com/reference/android/widget/SimpleCursorAdapter.html

    A continuación es una simple CustomCursorAdapter que yo uso con frecuencia. Añadir la de CustomCursorAdapter clase como una clase interna.

        protected class CustomCursorAdapter extends SimpleCursorAdapter  {
            private int layout; 
            private LayoutInflater inflater;
            private Context context;
    
            public CustomCursorAdapter (Context context, int layout, Cursor c, String[] from, int[] to) {
                super(context, layout, c, from, to);
                this.layout = layout;
                this.context = context;
                inflater = LayoutInflater.from(context);
    
            }
    
    
            @Override
            public View newView(Context context, Cursor cursor, ViewGroup parent) {
                Log.i("NewView", newViewCount.toString());
    
                View v = inflater.inflate(R.layout.list_cell, parent, false);
    
                return v;
            }
    
            @Override
            public void bindView(View v, Context context, Cursor c) {
                        //1 is the column where you're getting your data from
                String name = c.getString(1);
                /**
                 * Next set the name of the entry.
                 */
                TextView name_text = (TextView) v.findViewById(R.id.textView);
                if (name_text != null) {
                    name_text.setText(name);
                }   
            }

    Crear una instancia de la CustomCursorAdapter como así…
    Usted necesita para crear su cursor al igual que usted está haciendo ya.

    protected String[] from;
    protected int[] to;
    
        //From is the column name in your cursor where you're getting the data
        //to is the id of the view it will map to
        from = new String[]{"name"};
        to = new int[]{R.id.textView};
    
    CustomCursorAdapter adapter = new CustomCursorAdapter(this, R.layout.list, cursor, from, to);
    listView.setAdapter(adapter);
    • Este es un buen ejemplo. Gracias por compartir.

Dejar respuesta

Please enter your comment!
Please enter your name here