Autore Topic: visualizzare i dati di una query sqlite in listview  (Letto 244 volte)

Offline MrCrazy_ita

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
visualizzare i dati di una query sqlite in listview
« il: 29 Giugno 2015, 11:36:28 CEST »
0
Salve a tutti e grazie ,
Quello che vorrei fare e' memorizzare delle coordinate gps in un db sqlite  e richiamarle quando mi servono .
Ho realizzato il db con 2 tabelle  rilevamento e coordinate  , dopo aver inserito i dati manualmente nella tabella cordinate voglio che mi si visualizzino in una listview .
La classe coorinate e' quella sotto
Codice (Java): [Seleziona]
public class Coordinate {
    int _id;
    float _lng;
    float _lat;
    long _id_luogo;
    public Coordinate ()
    {}
    public Coordinate(float lng ,float lat ,long id_luogo ){

        this._lng = lng;
        this._lat = lat;
        this._id_luogo = id_luogo;

    }
    public Coordinate(float lng ,float lat){
        this._lng = lng;
        this._lat = lat;
    }

    public long getID() {
        return _id;
    }

    public void setID(int id) {
        this._id = id;
    }

    public float getLng() {
        return _lng;
    }

    public void setLng(float _lng) {
        this._lng = _lng;
    }

    public float getLat() {
        return _lat;
    }

    public void setLat(float lat) {
        this._lat = lat;
    }

    public long getId_luogo() {
        return _id_luogo;
    }

    public void setId_luogo(long id_luogo) {
        this._id_luogo = id_luogo;
    }
}
latitudine e longitudine sono 2 float , mentre l'idluogo e' long.

Nel main per popolare la listview chiamo questa funzione
Codice (Java): [Seleziona]
  public void populateview ()

    {
         db.getReadableDatabase();
        ArrayList<Coordinate> dati = db.getAllCoordinate("qua");
 
        ArrayAdapter<Coordinate> adapter = new ArrayAdapter<Coordinate> (this,android.R.layout.simple_list_item_1 ,dati);
        list.setAdapter(adapter);

    }
Mentre nel DatabaseHandler che estende SQLiteOpenHelper
Codice (Java): [Seleziona]
  public ArrayList<Coordinate> getAllCoordinate(String tag_name) {

        ArrayList<Coordinate> todos = new ArrayList<Coordinate>();
        String selectQuery = "SELECT * FROM " + TABLE_Coordinate ;
        Log.e(LOG, selectQuery);

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor c = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (c.moveToFirst()) {
            do {
                Coordinate td = new Coordinate();
                td.setID(c.getInt(c.getColumnIndex(KEY_COO_ID)));
                td.setLng(c.getFloat(c.getColumnIndex(KEY_COO_LNG)));
                td.setLat(c.getFloat(c.getColumnIndex(KEY_COO_LAT)));

                // adding to todo list
                todos.add(td);
            } while (c.moveToNext());
        }
        c.close();
        return todos;

    }
Attualmente se lancio la app la listview mi torna il numero di elementi presenti nella tabella coordinate , ma invece di scrivermi i dati mi scrive una riga per ogni record del tipo 'com.example.testdata.Coordinate@4a55b4b0'

Penso che il problema sia dato dal tipo di arrayList che mi torna e che non riesco a castare nella listview , avete qualche suggerimento???