Autore Topic: Perchè visualizzo un solo dato e non tutti?  (Letto 402 volte)

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Perchè visualizzo un solo dato e non tutti?
« il: 28 Marzo 2014, 18:53:09 CET »
0
Sto cercando di visualizzare i dati ricavati dal database e creare un grafico a torta. non ci sono errori, ma io vedo solo uno dei dati e non tutti quelli memorizzati. Spero che qualcuno mi dice dove ho sbagliato.
Codice (Java): [Seleziona]
private void pie(){

        SQLiteDatabase db = new MydbHelper(getActivity()).getReadableDatabase();

    String sql = "SELECT field1, SUM(field2), color FROM Table";
    Cursor c = db.rawQuery(sql, null);
    int count = c.getCount();

    double[] values = new double[count];
    String[] categoryNames = new String[count];
    int[] colori = new int [count];

    for(int i=0; i<count; i++) {
        c.moveToNext();    
        categoryNames[i] = c.getString(0);
        values[i] = c.getDouble(1);
        colori[i] = c.getInt(2);
    }
    // Instantiating CategorySeries to plot Pie Chart      
    CategorySeries distributionSeries = new CategorySeries(" Android version distribution as on October 1, 2012");
    for(int i=0 ;i < categoryNames.length;i++){
        // Adding a slice with its values and name to the Pie Chart
        distributionSeries.add(categoryNames[i], values[i]);
    }  
    // Instantiating a renderer for the Pie Chart
    DefaultRenderer defaultRenderer  = new DefaultRenderer();      
    for(int i = 0 ;i<categoryNames.length;i++){        
        SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();      

        defaultRenderer.addSeriesRenderer(seriesRenderer);
    }
    defaultRenderer.setChartTitle("Android version distribution as on October 1, 2012 ");
    defaultRenderer.setChartTitleTextSize(20);
    defaultRenderer.setZoomButtonsVisible(true);        

    Intent intent = ChartFactory.getPieChartIntent(getActivity(), distributionSeries , defaultRenderer, "AChartEnginePieChartDemo");        

    // Start Activity
    startActivity(intent);

            c.close();
            db.close();
            }

Post unito: 28 Marzo 2014, 19:45:22 CET
Mi rispondo da solo, nella fretta non ho inserito l'operatore GROUP BY
« Ultima modifica: 28 Marzo 2014, 19:45:22 CET da C_G, Reason: Merged DoublePost »

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #1 il: 02 Aprile 2014, 17:10:42 CEST »
0
Ciao, ho anch'io lo stesso problema anche se io sto facendo qualcosa di più semplice perché sono all'inizio.

Ho dei dati in un database e vorrei visualizzarli. Ho dato un'occhiata al tuo codice ma tu hai inserito parti per le mie conoscenze complicate. Anche a me visualizza un solo dato, mi hanno consigliato sempre nel forum le ListView. Ho provato a googlare e riesco a popolarle quando i dati li metto io ma non riesco a popolarle con i dati che prenda dal DB. Vedo molta confusione online. Mi potresti aiutare gentilmente?

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #2 il: 02 Aprile 2014, 17:25:20 CEST »
0
Spiega meglio cosa devi fare ;-)

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #3 il: 02 Aprile 2014, 17:38:23 CEST »
0
Ho creato un app che mi preleva mediante GPS le coordinate: latitudine e longitudine. Adesso devo salvare le stesse su un database e visualizzarle.

La parte per recuperare le coordinate GPS già funziona, adesso sto cercando di capire come visualizzare i dati dal database. Ho creato una nuova app per giocare con i db, e sono riuscito a creare un db e salvare i dati. Adesso mi ritrovo i dati nel db ma vorrei visualizzarli.

Ti posto il codice:

Codice: MainActivity.java
Codice (Java): [Seleziona]
package com.example.testdatabase;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.NavUtils;
 
public class MainActivity extends Activity {
    //Variabile per la gestione del database
    private MioDbHelper mMioDbHelper = null;
    private EditText mEditNome;
    private EditText mEditCognome;
    private EditText mEditEmail;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //Inizializiamo la variabile per poter gestire il database
        mMioDbHelper = new MioDbHelper(getApplicationContext());
 
        //Recupero il numero di record presenti nel database
        recuperaNumeroRecord();
 
        //Campi
        mEditNome = (EditText) this.findViewById(R.id.mainEditTextNome);
        mEditCognome = (EditText) this.findViewById(R.id.mainEditTextCognome);
        mEditEmail = (EditText) this.findViewById(R.id.mainEditTextEmail);
 
        //Aggiungi Record
        Button button = (Button) this.findViewById(R.id.mainButtonAggiungi);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //Query di inserimento
                ContentValues contentValues = new ContentValues();
 
                contentValues.put("nome", mEditNome.getText().toString());
                contentValues.put("cognome", mEditCognome.getText().toString());
                contentValues.put("email", mEditEmail.getText().toString());
 
                //Accedo al database in scrittura
                SQLiteDatabase db = mMioDbHelper.getWritableDatabase();
                db.insert("rubrica", null, contentValues);    //Inserisco i dati
 
                //Pulisco i campi
                mEditCognome.setText("");
                mEditEmail.setText("");
                mEditNome.setText("");
                mEditNome.requestFocus();
 
                Toast.makeText(getApplicationContext(), "Nuovo record aggiunto", Toast.LENGTH_SHORT).show();
 
                //Aggiorno il numero dei record presenti nel database
                recuperaNumeroRecord();
             
                recuperaNome();
               
            }
        });
    }
 
   
 
    private void recuperaNumeroRecord() {
        //Chiediamo l'accesso al db
        SQLiteDatabase db = mMioDbHelper.getReadableDatabase();
 
        //Query per recuperare il numero di righe presenti nel db
        final String sql = "SELECT COUNT(*) FROM rubrica";
 
        Cursor c = db.rawQuery(sql, null);
 
        if(c.moveToFirst()) {
            final TextView tView = (TextView) this.findViewById(R.id.mainTextViewNumeroRecord);
            tView.setText(c.getString(0));
        }
    }
   
    private void recuperaNome() {
        //Chiediamo l'accesso al db
        SQLiteDatabase db = mMioDbHelper.getReadableDatabase();

      //Query per recuperare il numero di righe presenti nel db
        final String sql = "SELECT nome FROM rubrica";
       
        Cursor c = db.rawQuery(sql, null);

        if(c.moveToFirst()) {
            final TextView tView = (TextView) this.findViewById(R.id.vediNome);
            tView.setText(c.getString(0));
           
        }  
       
    }
   
  //Collegamento alla Activity "Contatti" mediante pressione del bottone
                public void visualizzaCoordinateSalvate (View view){
                         
                Intent coordinate_DB;
         
                coordinate_DB = new Intent (this, Out_DB.class);
         
                startActivity(coordinate_DB);
                }
}


Codice: MioDbHelper.java
Codice (Java): [Seleziona]
package com.example.testdatabase;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
 
public class MioDbHelper extends SQLiteOpenHelper {
    //Nome del database che vogliamo creare
    private static final String DB_NOME = "WIP";
 
    /**
     * Numero della versione del database.
     *
     * La numerazione della vesione del database deve iniziare dal numero 1.
     * Quando viene specificata una nuova versione android useguirà la funzione onUpgrade.
     */

    private static final int DB_VERSIONE = 1;
 
    public MioDbHelper(Context context) {
        super(context, DB_NOME, null, DB_VERSIONE);
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        /*
         * Stringa contenente la sintassi SQL per la
         * creazione della tabella RUBRICA
         */

        String sql = "CREATE TABLE rubrica";
        sql += "(_id INTEGER PRIMARY KEY,";
        sql += "nome TEXT NOT NULL,";
        sql += "cognome TEXT,";
        sql += "email TEXT);";
 
        //Eseguiamo la query
        db.execSQL(sql);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
 
    }
 
}


Codice: Out_db.java
Codice (Java): [Seleziona]
package com.example.testdatabase;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Out_DB extends Activity {

        private MioDbHelper mMioDbHelper = null;
    private EditText mEditNome;
    private EditText mEditCognome;
    private EditText mEditEmail;
       
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_out__db);
               
               
                mMioDbHelper = new MioDbHelper(getApplicationContext());
                 
        //Recupero il numero di record presenti nel database
 
        //Campi
        mEditNome = (EditText) this.findViewById(R.id.mainEditTextNome);
        mEditCognome = (EditText) this.findViewById(R.id.mainEditTextCognome);
        mEditEmail = (EditText) this.findViewById(R.id.mainEditTextEmail);
 
        //Aggiungi Record
        Button button = (Button) this.findViewById(R.id.mainButtonVisualizza);
        button.setOnClickListener(new OnClickListener() {
               
            @Override
            public void onClick(View v) {
                recuperaNome();
               
            } //fine onClick()
        });
               
               
               
        }
       
       

       
       
       
        private void recuperaNome() {
        //Chiediamo l'accesso al db
        SQLiteDatabase db = mMioDbHelper.getReadableDatabase();

      //Query per recuperare il numero di righe presenti nel db
        final String sql = "SELECT nome FROM rubrica";
       
        Cursor c = db.rawQuery(sql, null);
       
       
       
        if(c.moveToFirst()) {
                final TextView tView = (TextView) this.findViewById(R.id.vediNome12);

                tView.setText(c.getString(0));    
        }
        if(c.moveToNext()){
               
               
            final TextView tView = (TextView) this.findViewById(R.id.vediNome12);

                tView.setText(c.getString(0));      
        }
           
       
    } //fine metodo recuperaNome()
       

       
} //fine Activity Out_DB


I layout sono:

layout: activity_main.xml
Codice (XML): [Seleziona]
<?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" >

    <Button
       android:id="@+id/mainButtonAggiungi"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="true"
       android:layout_alignParentLeft="true"
       android:layout_alignParentRight="true"
       android:text="Aggiungi record" />

    <TextView
       android:id="@+id/textView2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_above="@+id/textView3"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"
       android:gravity="center_vertical"
       android:text="Nome:"
       android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
       android:id="@+id/mainEditTextNome"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentRight="true"
       android:layout_alignParentTop="true"
       android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
       android:id="@+id/mainEditTextCognome"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentRight="true"
       android:layout_below="@id/mainEditTextNome"
       android:ems="10" />

    <EditText
       android:id="@+id/mainEditTextEmail"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentRight="true"
       android:layout_below="@+id/mainEditTextCognome"
       android:ems="10"
       android:inputType="textEmailAddress" />

    <TextView
       android:id="@+id/textView4"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBottom="@+id/mainEditTextEmail"
       android:layout_alignParentLeft="true"
       android:layout_below="@+id/mainEditTextCognome"
       android:gravity="center_vertical"
       android:text="Email:"
       android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
       android:id="@+id/textView3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_above="@+id/textView4"
       android:layout_alignParentLeft="true"
       android:layout_below="@+id/mainEditTextNome"
       android:gravity="center_vertical"
       android:text="Cognome:"
       android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
       android:id="@+id/textView1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_above="@+id/mainButtonAggiungi"
       android:layout_alignParentLeft="true"
       android:text="Numero di record inseriti:" />

    <TextView
       android:id="@+id/mainTextViewNumeroRecord"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentRight="true"
       android:layout_alignTop="@+id/textView1"
       android:layout_toRightOf="@+id/textView1"
       android:gravity="center_vertical|center_horizontal"
       android:text="0"
       android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
       android:id="@+id/vediNome"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/textView4"
       android:layout_marginTop="78dp"
       android:text="nome:"
       android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
       android:id="@+id/visualizzaCoordinateSalvate"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/vediNome"
       android:layout_marginTop="65dp"
       android:layout_toRightOf="@+id/textView4"
       android:onClick="visualizzaCoordinateSalvate"
       android:text="Button" />

</RelativeLayout>


Layout: activity_out__db.xml
Codice (XML): [Seleziona]
<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=".Contatti"
   >

    <TextView
       android:id="@+id/vediNome"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:text=""
       />

    <Button
       android:id="@+id/mainButtonVisualizza"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerVertical="true"
       android:layout_marginLeft="36dp"
       android:layout_toRightOf="@+id/vediNome"
       android:text="Button"
       />

    <TextView
       android:id="@+id/vediNome1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentTop="true"
       android:layout_alignRight="@+id/mainButtonVisualizza"
       android:layout_marginTop="26dp"
       />
 
   
    <ListView
       android:id="@+id/provaListView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       
       ></ListView>
   
    <TextView
       android:id="@+id/vediNome12"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       />

   
</RelativeLayout>

Post unito: 02 Aprile 2014, 17:40:07 CEST
Adesso cosa mi succede: siccome ho solo un'area dove visualizzare i dati del DB mi prende il secondo inserito perché scorro il Cursor con:
Codice (Java): [Seleziona]
c.moveToNext(). Ma io li vorrei elencati tutti.
« Ultima modifica: 02 Aprile 2014, 17:40:08 CEST da pup3770, Reason: Merged DoublePost »

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #5 il: 02 Aprile 2014, 17:59:23 CEST »
0
Grazie mille per la disponibilità e per i link ma sono sistemi per la visualizzazione di dati in maniera statica nel senso: li inserisco nel codice e poi compilo e visualizzo. Io invece, come da codice postato li inserisco direttamente dall'app e poi li vorrei visualizzare.

Come fatto nei due link, l'ho già realizzato:

Codice: MyListView.java
Codice (Java): [Seleziona]
package com.example.mylistview;

import java.util.ArrayList;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MyListView extends Activity {  
         
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_list);  
         
        // definisco un array di stringhe  
        String[] nameproducts = new String[] { "Product1", "Product2", "Product3", "Product4", "Product5", "Product6", "Product7", "Product8", "Product9", "Product10", "Product11", "Product12" };  
 
        // definisco un ArrayList  
        final ArrayList <String> listp = new ArrayList<String>();  
        for (int i = 0; i < nameproducts.length; ++i) {  
             listp.add(nameproducts[i]);  
        }  
        // recupero la lista dal layout  
        final ListView mylist = (ListView) findViewById(R.id.listView1);  
 
        // creo e istruisco l'adattatore  
        final ArrayAdapter <String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listp);  
 
        // inietto i dati  
        mylist.setAdapter(adapter);          
    }      
}  



Layout: activity_list.xml
Codice (XML): [Seleziona]
<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=".MyListView" >

    <ListView
       android:id="@+id/listView1"
       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ></ListView>    
       
    <TextView
       android:id="@+id/textList"
       android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       />
   
   
   
</RelativeLayout>

Così funziona. Ma io vorrei avere un modo per far si che appena si apre l'app l'utente possa cliccare su inserisci per inserire un nuovo utente, oppure cliccare su visualizza per visualizzare l'elenco degli utenti registrati (cioè di tutte le registrazioni di utenti che ha fatto da quando ha installato l'app - per intenderci)

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #6 il: 02 Aprile 2014, 18:06:09 CEST »
0
Che intendi per statico? cmq se dall'app inserisci i dati nel db, puoi benissimo fare una Query che preleva i dati che vuoi e poi li visualizzi nella ListView. Non vedo nulla di strano, non complicarti la vita!

Citazione
Ma io vorrei avere un modo per far si che appena si apre l'app l'utente possa cliccare su inserisci per inserire un nuovo utente, oppure cliccare su visualizza per visualizzare l'elenco degli utenti registrati (cioè di tutte le registrazioni di utenti che ha fatto da quando ha installato l'app - per intenderci)
Per questa cosa, nella main activity inserisci 2 Button, uno che apre una activity in cui l'utente inserisce i dati da memorizzare nel db. L'altro che apre una activity in cui c'è la ListView con i dati prelevati dal db.

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #7 il: 02 Aprile 2014, 18:10:18 CEST »
0
Per i due bottoni ok quello no problem.

Ma come leggo dalle guide dei link, per fare che il secondo link faccia al caso mio, al posto di:
Codice (Java): [Seleziona]
DB.execSQL("INSERT INTO " +
                                tableName +
                                " Values ('M','shumi','India',25);");

che è l'esempio del link, devo fare:
Codice (Java): [Seleziona]
DB.execSQL("SELECT nome FROM rubrica");
dici così?

e in automatico lui si preleva i dati dal DB e me li stampa?


Post unito: 02 Aprile 2014, 18:16:57 CEST
no scusa, ho detto una fesseria perché non avevo visto che questo codice era nell'ELSE.

Quindi la soluzione è al punto 2 del secondo link.... Praticamente devo solo utilizzare il codice:
Codice: [Seleziona]
2.) Open ListViewFromSQLiteDB.java file and write following code there:
ovvero:
Codice (Java): [Seleziona]
package com.example.ListViewFromSQLiteDB;

import java.util.ArrayList;

import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class DataListView extends ListActivity {
       
        private ArrayList<String> results = new ArrayList<String>();
        private String tableName = DBHelper.tableName;
        private SQLiteDatabase newDB;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        openAndQueryDatabase();
       
        displayResultList();
       
       
    }
        private void displayResultList() {
                TextView tView = new TextView(this);
        tView.setText("This data is retrieved from the database and only 4 " +
                        "of the results are displayed");
        getListView().addHeaderView(tView);
       
        setListAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, results));
        getListView().setTextFilterEnabled(true);
               
        }
        private void openAndQueryDatabase() {
                try {
                        DBHelper dbHelper = new DBHelper(this.getApplicationContext());
                        newDB = dbHelper.getWritableDatabase();
                        Cursor c = newDB.rawQuery("SELECT FirstName, Age FROM " +
                                tableName +
                                " where Age > 10 LIMIT 4", null);

                if (c != null ) {
                        if  (c.moveToFirst()) {
                                do {
                                        String firstName = c.getString(c.getColumnIndex("FirstName"));
                                        int age = c.getInt(c.getColumnIndex("Age"));
                                        results.add("Name: " + firstName + ",Age: " + age);
                                }while (c.moveToNext());
                        }
                }                      
                } catch (SQLiteException se ) {
                Log.e(getClass().getSimpleName(), "Could not create or Open the database");
        } finally {
                if (newDB != null)
                        newDB.execSQL("DELETE FROM " + tableName);
                        newDB.close();
        }

        }
   
}

e così lui mi dovrebbe ciclare mediante: c.moveToFirst() e prelevare tutti i dati dal DB e al posto di:
Codice (Java): [Seleziona]
Cursor c = newDB.rawQuery("SELECT FirstName, Age FROM " +
                                tableName +
                                " where Age > 10 LIMIT 4", null);

mettere:
Codice (Java): [Seleziona]
Cursor c = newDB.rawQuery("SELECT name FROM rubrica);
e al posto del codice:
Codice (Java): [Seleziona]
if (c != null ) {
                        if  (c.moveToFirst()) {
                                do {
                                        String firstName = c.getString(c.getColumnIndex("FirstName"));
                                        int age = c.getInt(c.getColumnIndex("Age"));
                                        results.add("Name: " + firstName + ",Age: " + age);
                                }while (c.moveToNext());

sostituirlo con:
Codice (Java): [Seleziona]
if (c != null ) {
                        if  (c.moveToFirst()) {
                                do {
                                        String firstName = c.getString(c.getColumnIndex("name"));
                                        results.add("Name: " + firstName);
                                }while (c.moveToNext());

Credo che così sia corretto. Almeno spero
« Ultima modifica: 02 Aprile 2014, 18:16:57 CEST da pup3770, Reason: Merged DoublePost »

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #8 il: 02 Aprile 2014, 18:19:54 CEST »
0
Ci sono diversi modi per farlo, si li preleva, cmq poi devi creare un Adapter ed impostare i dati nel metodo getView().
Se non lo hai mai fatto è meglio che approfondisci questa cosa.
Questo è un piccolo esempio che ho usato tempo fà:
Codice: [Seleziona]
private void list() {
                SQLiteDatabase db = mHelper.getReadableDatabase();
                final List<Dettaglio> dettagli = new ArrayList<Dettaglio>();
               
                String sql = "SELECT .....";
                Cursor c = db.rawQuery(sql, null);

                while (c.moveToNext()){
                        Dettaglio d = new Dettaglio();
                       
                        d.id = c.getInt(0);
                        d.c = c.getString(1);
                        d.c = c.getInt(2);
                       
                       
                        dettagli.add(d);
                }
                c.close();
       
       
        db.close();
               
               
                        ListAdapter adapter = new ArrayAdapter<Dettaglio>(this, R.layout.de, R.id.tv_nome, dettagli){


                        @Override
                        public View getView(int position, View convertView, ViewGroup parent) {
                                View row = super.getView(position, convertView, parent);
                               
                               
                                TextView tvId, tvC;
                                ImageView tvCerchio;
                               
                                //qui imposti le variabili
                                return row;
                        };
                };
                lista.setAdapter(adapter);
        }

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #9 il: 02 Aprile 2014, 18:23:00 CEST »
0
ehm...già entriamo nel difficile...ci sono molte cose che non capisco..ma non è che potresti aiutarmi a modificare il mio codice, gentilmente. Credimi è da 2 settimane che esco pazzo ma sono sempre bloccato nello stesso punto. Ho provato a leggere e studiare ma non sono riuscito ancora. Non capisco se sbaglio io o c'è molta confusione nelle guide che si trovano online.

Offline C_G

  • Utente junior
  • **
  • Post: 69
  • Respect: 0
    • Mostra profilo
Re:Perchè visualizzo un solo dato e non tutti?
« Risposta #10 il: 02 Aprile 2014, 18:30:46 CEST »
0
Prendi come riferimento quello che ho scritto e cerca su internet, lo sò ci vuole moltissimo tempo, passione e perseveranza...