Listview con immagini e testo da SQLITE Database

c.capannini85

Nuovo Utente
23 Feb 2015
3
0
0
Salve,
mi trovo in questo buco nero da cui ancora non sono riuscito a scappare...allora veniamo al dunque:

Il database da questo sito http://sagsas.it/automotive-2015/ me lo sono immaginato così:

Codice:
 private static final int VERSIONE_DATABASE = 1;
    private static final String NOME_DATABASE = "automotive.db";
    private static final String TABELLA_MARCHE = "marche";
    private static final String TABELLA_MODELLI = "modelli";
    private static final String TABELLA_PEZZI = "pezzi";

    private static final String MC_ID = "id";
    private static final String MC_NOME = "nome";
    private static final String MC_CODICE = "codice";

    private static final String MD_ID = "id";
    private static final String MD_NOME = "nome";
    private static final String MD_NUMPORTE = "numporte";
    private static final String MD_ANNO = "anno";
    private static final String MD_CODMARCA ="cod_marca";
    private static final String MD_CODAUTO = "cod_auto";
    private static final String MD_IMMAGINE = "immagine";

    private static final String PZ_ID = "id";
    private static final String PZ_DESCRIZIONE = "descrizione";
    private static final String PZ_IMGDESCRIZIONE = "imgdescrizione";
    private static final String PZ_IMGPEZZO = "imgpezzo";
    private static final String PZ_CODSAG = "codsag";
    private static final String PZ_CODOE = "codoe";
    private static final String PZ_N = "n";
    private static final String PZ_CSCT = "csct";
    private static final String PZ_A = "a";
    private static final String PZ_B = "b";
    private static final String PZ_CODAUTO = "cod_auto";
    private static final String PZ_CODMARCA = "cod_marca";

   /* ----- QUERY PER LA CREAZIONE DI TABELLE */

  String QUERY_CREA_TABELLA_MARCHE = "CREATE TABLE " + TABELLA_MARCHE + "(" +
                MC_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                MC_NOME + " TEXT NOT NULL," +
                MC_CODICE + " TEXT NOT NULL)";

        String QUERY_CREA_TABELLA_MODELLI = "CREATE TABLE " + TABELLA_MODELLI + "("
                + MD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                MD_NOME + " TEXT NOT NULL," +
                MD_NUMPORTE + " INTEGER NOT NULL," +
                MD_ANNO + " INTEGER NOT NULL," +
                MD_CODMARCA + " TEXT NOT NULL," +
                MD_CODAUTO + " TEXT NOT NULL," +
                MD_IMMAGINE + " TEXT NOT NULL" +
                ")";


        String QUERY_CREA_TABELLA_PEZZI = "CREATE TABLE " + TABELLA_PEZZI + "("
                + PZ_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                PZ_DESCRIZIONE + " TEXT NOT NULL," +
                PZ_IMGDESCRIZIONE + " TEXT NOT NULL," +
                PZ_IMGPEZZO + " TEXT NOT NULL," +
                PZ_CODSAG + " TEXT NOT NULL," +
                PZ_CODOE + " TEXT NOT NULL," +
                PZ_N + " TEXT NOT NULL," +
                PZ_CSCT + " TEXT NOT NULL," +
                PZ_A + " TEXT NOT NULL," +
                PZ_B + " TEXT NOT NULL," +
                PZ_CODAUTO + " TEXT NOT NULL," +
                PZ_CODMARCA + " TEXT NOT NULL" +
                ")";

Il database risulterebbe in questo modo:

YAMEX.jpg

OK? Ho fatto bene o c'è qualcosa di sbagliato? Magari qualche campo che non è messo al punto giusto?

Poi la mia listview voglio che sia in questo modo:

Codice:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:id="@+id/imgpez"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="20dp"
        android:layout_alignParentLeft="true"
        android:src="@mipmap/ic_launcher" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="CODICE SAG"
        android:textColor="#000000"
        android:layout_marginLeft="30dp"
        android:id="@+id/txtcodsag"
        android:layout_marginTop="40dp"
        android:layout_toRightOf="@+id/imgpez"
        android:layout_toEndOf="@+id/imgpez" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="CODICE OE"
        android:id="@+id/txtcodoe"
        android:textColor="#000000"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="40dp"
        android:layout_toRightOf="@+id/txtcodsag"
        android:layout_toEndOf="@+id/txtcodsag" />

    <ImageView
        android:layout_width="65dp"
        android:layout_height="65dp"
        android:id="@+id/imgdesc"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="30dp"
        android:layout_toRightOf="@+id/txtcodoe"
        android:layout_toEndOf="@+id/txtcodoe"
        android:src="@mipmap/ic_launcher" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="N"
        android:id="@+id/txtN"
        android:layout_marginTop="40dp"
        android:textColor="#000000"
        android:layout_marginLeft="30dp"
        android:layout_toRightOf="@+id/imgdesc"
        android:layout_toEndOf="@+id/imgdesc" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="CS-CT"
        android:id="@+id/txtCSCT"
        android:layout_marginTop="40dp"
        android:textColor="#000000"
        android:layout_marginLeft="30dp"
        android:layout_toRightOf="@+id/txtN"
        android:layout_toEndOf="@+id/txtN" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="A"
        android:id="@+id/txtA"
        android:textColor="#000000"
        android:layout_marginTop="40dp"
        android:layout_marginLeft="30dp"
        android:layout_toRightOf="@+id/txtCSCT"
        android:layout_toEndOf="@+id/txtCSCT" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="B"
        android:id="@+id/txtB"
        android:textColor="#000000"
        android:layout_marginTop="40dp"
        android:layout_marginLeft="30dp"
        android:layout_toRightOf="@+id/txtA"
        android:layout_toEndOf="@+id/txtA" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Dettagli"
        android:textColor="#000000"
        android:id="@+id/apridettagli"
        android:layout_alignBottom="@+id/imgdesc"
        android:layout_toRightOf="@+id/txtB"
        android:layout_toEndOf="@+id/txtB" />

</RelativeLayout>

Ossia che verrà visualizzata in questo modo :
k2gWZ.jpg

Ecco questo è la classe Pezzi che contiene gli elementi della lista dei pezzi :

Codice:
package com.example.cristo1985.automotive2015.app;


public class Pezzi {

    public int id;
    public String descrizione;
    public String imgdescrizione;
    public String imgpezzo;
    public String codsag;
    public String codoe;
    public String n;
    public String csct;
    public String a;
    public String b;
    public String cod_auto;
    public String cod_marca;

 public Pezzi(int id, String descrizione, String imgdescrizione, String imgpezzo, String codsag, String codoe, String n, String csct, String a, String b, String cod_auto, String cod_marca) {

     super();
     this.id = id;
     this.descrizione = descrizione;
     this.imgdescrizione = imgdescrizione;
     this.imgpezzo = imgpezzo;
     this.codsag = codsag;
     this.codoe = codoe;
     this.csct  = csct;
     this.n = n;
     this.a = a;
     this.b = b;
     this.cod_auto = cod_auto;
     this.cod_marca = cod_marca;

     }

     public int getId() {
        return id;
    }

    public String getDescrizione() {
        return descrizione;
    }

    public String getImgDescrizione() {
        return imgdescrizione;
    }

    public String getImgPezzo() {
        return imgpezzo;
    }

    public String getCodSag() {
        return codsag;
    }

    public String getCodOe() {
        return codoe;
    }

    public String getN() {
        return n;
    }

    public String getA() {
        return a;
    }

    public String getB() {
        return b;
    }

    public String getCodAuto() {
        return cod_auto;
    }

    public String getCodMarca() {
        return cod_marca;
    }

    public String getCsct() {return csct; }




}

Ho fatto bene o ho sbagliato qualcosa?

La gestione del database è questo :

Codice:
package com.example.cristo1985.automotive2015.app;


import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;

import java.io.Console;
import java.util.ArrayList;
import java.util.List;

public class GestioneDatabase extends SQLiteOpenHelper{

    private static final int VERSIONE_DATABASE = 1;
    private static final String NOME_DATABASE = "automotive.db";
    private static final String TABELLA_MARCHE = "marche";
    private static final String TABELLA_MODELLI = "modelli";
    private static final String TABELLA_PEZZI = "pezzi";

    private static final String MC_ID = "id";
    private static final String MC_NOME = "nome";
    private static final String MC_CODICE = "codice";

    private static final String MD_ID = "id";
    private static final String MD_NOME = "nome";
    private static final String MD_NUMPORTE = "numporte";
    private static final String MD_ANNO = "anno";
    private static final String MD_CODMARCA ="cod_marca";
    private static final String MD_CODAUTO = "cod_auto";
    private static final String MD_IMMAGINE = "immagine";

    private static final String PZ_ID = "id";
    private static final String PZ_DESCRIZIONE = "descrizione";
    private static final String PZ_IMGDESCRIZIONE = "imgdescrizione";
    private static final String PZ_IMGPEZZO = "imgpezzo";
    private static final String PZ_CODSAG = "codsag";
    private static final String PZ_CODOE = "codoe";
    private static final String PZ_N = "n";
    private static final String PZ_CSCT = "csct";
    private static final String PZ_A = "a";
    private static final String PZ_B = "b";
    private static final String PZ_CODAUTO = "cod_auto";
    private static final String PZ_CODMARCA = "cod_marca";

    public GestioneDatabase(Context context) {
        super(context, NOME_DATABASE, null, VERSIONE_DATABASE);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
// Category table create query
        String QUERY_CREA_TABELLA_MARCHE = "CREATE TABLE " + TABELLA_MARCHE + "(" +
                MC_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                MC_NOME + " TEXT NOT NULL," +
                MC_CODICE + " TEXT NOT NULL)";

        String QUERY_CREA_TABELLA_MODELLI = "CREATE TABLE " + TABELLA_MODELLI + "("
                + MD_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                MD_NOME + " TEXT NOT NULL," +
                MD_NUMPORTE + " INTEGER NOT NULL," +
                MD_ANNO + " INTEGER NOT NULL," +
                MD_CODMARCA + " TEXT NOT NULL," +
                MD_CODAUTO + " TEXT NOT NULL," +
                MD_IMMAGINE + " TEXT NOT NULL" +
                ")";


        String QUERY_CREA_TABELLA_PEZZI = "CREATE TABLE " + TABELLA_PEZZI + "("
                + PZ_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                PZ_DESCRIZIONE + " TEXT NOT NULL," +
                PZ_IMGDESCRIZIONE + " TEXT NOT NULL," +
                PZ_IMGPEZZO + " TEXT NOT NULL," +
                PZ_CODSAG + " TEXT NOT NULL," +
                PZ_CODOE + " TEXT NOT NULL," +
                PZ_N + " TEXT NOT NULL," +
                PZ_CSCT + " TEXT NOT NULL," +
                PZ_A + " TEXT NOT NULL," +
                PZ_B + " TEXT NOT NULL," +
                PZ_CODAUTO + " TEXT NOT NULL," +
                PZ_CODMARCA + " TEXT NOT NULL" +
                ")";


        db.execSQL(QUERY_CREA_TABELLA_MARCHE);
        db.execSQL(QUERY_CREA_TABELLA_MODELLI);
        db.execSQL(QUERY_CREA_TABELLA_PEZZI);


        /* Inserimento marche */


            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('AIXAM','AIX')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('ALFA ROMEO','ALR')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('AUDI','AUD')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('BMW','BMW')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('CHEVROLET','CHT')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('CHRYSLER','CHR')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('CITROËN','CIN')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('DACIA','DAC')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('DAEWOO','DWO')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('FIAT','FIA')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('FORD','FOR')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('HONDA','HON')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('HYUNDAI','HNI')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('INNOCENTI','ICI')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('JEEP','JEE')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('KIA','KIA')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('LADA','LAD')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('LANCIA','LCA')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('LAND ROVER','LDR')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('MAZDA','MAZ')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('MERCEDES-BENZ','MCB')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('MINI','MIN')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('MITSUBISHI','MBH')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('NISSAN','NIS')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('OPEL','OPE')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('PEUGEOT','PGT')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('PORSCHE','PCH')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('RENAULT','RAT')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('ROVER','RVR')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('SAAB','SAB')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('SEAT','SEA')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('SKODA','SKA')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('SMART','SRT')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('SUBARU','SBU')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('SUZUKI','SZI')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('TATA (TELCO)','TAT')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('TOYOTA','TYA')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('VOLVO','VLV')");
            db.execSQL("INSERT INTO marche (nome, codice) VALUES ('VW','VOL')");



            /* Riempimento con i vari modelli */

        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2000,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2001,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2002,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2003,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2004,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2005,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2006,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2007,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2008,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2009,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2010,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2011,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2012,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2013,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2014,'AIX','4300AIX','auto001')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('400',3,2015,'AIX','4300AIX','auto001')");

        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('145',3,1994,'ALR','145394ALR','auto002')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('145',3,1995,'ALR','145395ALR','auto002')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('145',3,1996,'ALR','145396ALR','auto002')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('145',3,1997,'ALR','145397ALR','auto002')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('145',3,1998,'ALR','145398ALR','auto002')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('145',3,1999,'ALR','145399ALR','auto002')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('145',3,2000,'ALR','145300ALR','auto002')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('145',3,2001,'ALR','145301ALR','auto002')");

        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('146',5,1994,'ALR','146594ALR','auto003')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('146',5,1995,'ALR','146595ALR','auto003')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('146',5,1996,'ALR','146596ALR','auto003')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('146',5,1997,'ALR','146597ALR','auto003')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('146',5,1998,'ALR','146598ALR','auto003')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('146',5,1999,'ALR','146599ALR','auto003')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('146',5,2000,'ALR','146500ALR','auto003')");

        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2000,'ALR','147300ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2001,'ALR','147301ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2002,'ALR','147302ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2003,'ALR','147303ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2004,'ALR','147304ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2005,'ALR','147305ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2006,'ALR','147306ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2007,'ALR','147307ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2008,'ALR','147308ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2009,'ALR','147309ALR','auto004')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',3,2010,'ALR','147310ALR','auto004')");

        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2000,'ALR','147500ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2001,'ALR','147501ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2002,'ALR','147502ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2003,'ALR','147503ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2004,'ALR','147504ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2005,'ALR','147505ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2006,'ALR','147506ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2007,'ALR','147507ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2008,'ALR','147508ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2009,'ALR','147509ALR','auto005')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('147',5,2010,'ALR','147510ALR','auto005')");

        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('155',4,1992,'ALR','155400ALR','auto006')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('155',4,1993,'ALR','155401ALR','auto006')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('155',4,1994,'ALR','155402ALR','auto006')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('155',4,1995,'ALR','155403ALR','auto006')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('155',4,1996,'ALR','155404ALR','auto006')");
        db.execSQL("INSERT INTO modelli (nome, numporte, anno, cod_marca, cod_auto, immagine) VALUES ('155',4,1997,'ALR','155405ALR','auto006')");


        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A312','','170','Sfera/Ball - Sfera/Ball','395','178','4300AIX','AIX')");

        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A302','60567794','580','Sfera/Ball - Sfera/Ball','310','137','145394ALR','ALR')");

        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A302','60567794','580','Sfera/Ball - Sfera/Ball','310','137','145395ALR','ALR')");

        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A302','60567794','580','Sfera/Ball - Sfera/Ball','310','137','145396ALR','ALR')");

        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A302','60567794','580','Sfera/Ball - Sfera/Ball','310','137','145397ALR','ALR')");

        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A302','60567794','580','Sfera/Ball - Sfera/Ball','310','137','145398ALR','ALR')");

        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A302','60567794','580','Sfera/Ball - Sfera/Ball','310','137','145399ALR','ALR')");

        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A302','60567794','580','Sfera/Ball - Sfera/Ball','310','137','145300ALR','ALR')");

        db.execSQL("INSERT INTO " + TABELLA_PEZZI + " (descrizione, imgdescrizione, imgpezzo,  codsag, codoe, n, csct, a, b, cod_auto, cod_marca) " +
                "VALUES ('Posteriore/Rear','posteriore','molla','A302','60567794','580','Sfera/Ball - Sfera/Ball','310','137','145301ALR','ALR')");



    }

    public void CaricaMarche(SQLiteDatabase db) {

    }

    public void CaricaModelli(SQLiteDatabase db) {

    }

    public void CaricaPezzi(SQLiteDatabase db) {

    }

    public String getImmagineAuto(String codice, String modello, String anno)
    {

        Cursor cursor = null;
        String immagine = "";
        try{

            SQLiteDatabase db = this.getReadableDatabase();

            cursor = db.rawQuery("SELECT * FROM " + TABELLA_MODELLI + " WHERE nome=?", new String[] {modello + ""});

            if(cursor.getCount() > 0) {

                cursor.moveToFirst();
                immagine = cursor.getString(cursor.getColumnIndex("immagine"));
            }

            return immagine;

        }finally {

            cursor.close();
        }

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABELLA_MARCHE);
        db.execSQL("DROP TABLE IF EXISTS " + TABELLA_MODELLI);
        db.execSQL("DROP TABLE IF EXISTS " + TABELLA_PEZZI);

        // Create tables again
        onCreate(db);
    }


    /* Leggi tutte le marche */
    public List<String> getTutteMarche(){
        List<String> list = new ArrayList<String>();


            String selectQuery = "SELECT  * FROM " + TABELLA_MARCHE;

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


        if (cursor.moveToFirst()) {
            do {
                list.add(cursor.getString(1));
            } while (cursor.moveToNext());
        }

        cursor.close();
        db.close();


        return list;
    }

    /* Ottiene il codice della marca dal nome */
    public String getCodiceMarca(String marca) {


        Cursor cursor = null;
        String codicemarca = "";
        try{

            SQLiteDatabase db = this.getReadableDatabase();

            cursor = db.rawQuery("SELECT codice FROM " + TABELLA_MARCHE + " WHERE nome=?", new String[] {marca + ""});

            if(cursor.getCount() > 0) {

                cursor.moveToFirst();
                codicemarca = cursor.getString(cursor.getColumnIndex("codice"));
            }

            return codicemarca;

        }finally {

            cursor.close();
        }



    }

    /* Crea la lista dei modelli in base alla marca */
    public List<String> getModelloDaMarca(String codice_marca){

        List<String> list = new ArrayList<String>();

        String query = "SELECT DISTINCT nome FROM " + TABELLA_MODELLI + " WHERE cod_marca = '" + codice_marca + "'";

        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.rawQuery(query, null);


        if (cursor.moveToFirst()) {
            do {
                list.add(cursor.getString(0));
            } while (cursor.moveToNext());
        }

        cursor.close();
        db.close();


        return list;
    }

    public List<Pezzi> getPezziDB(String codice_marca, String modello, String anno)
    {
        List<Pezzi> elencoPezzi = new ArrayList<Pezzi>();

        String cod_auto = getCodiceAuto(codice_marca, modello, anno);

        String query = "SELECT DISTINCT * FROM " + TABELLA_PEZZI + " WHERE cod_marca = '" + codice_marca + "' AND cod_auto = '" + cod_auto + "'";




        SQLiteDatabase db = this.getReadableDatabase();

        Cursor cursor = db.rawQuery(query, null);

        if (cursor.moveToFirst()) {
            do {
                elencoPezzi.add(new Pezzi(cursor.getInt(0), cursor.getString(1), cursor.getString(2),cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7), cursor.getString(8), cursor.getString(9), cursor.getString(10), cursor.getString(11)));
            } while (cursor.moveToNext());
        }

        cursor.close();
        db.close();


        return elencoPezzi;
    }

    public String getCodiceAuto(String codice_marca, String modello, String anno)
    {
        //String query = "SELECT DISTINCT * FROM " + TABELLA_MODELLI + " WHERE cod_marca = '" + codice_marca + "' AND nome = '" + modello + "' AND anno = '" + anno + "'";

        Cursor cursor = null;
        String cod_auto = "";
        try{

            SQLiteDatabase db = this.getReadableDatabase();

            cursor = db.rawQuery("SELECT DISTINCT * FROM " + TABELLA_MODELLI + " WHERE cod_marca = '" + codice_marca + "' AND nome = '" + modello + "' AND anno = '" + anno + "'", null);

            if(cursor.getCount() > 0) {

                cursor.moveToFirst();
                cod_auto = cursor.getString(cursor.getColumnIndex("cod_auto"));
            }

            return cod_auto;

        }finally {

            cursor.close();
        }


    }

    /* Crea la lista degli anni in base alla marca e  modello  */
    public List<String> getAnniDaMarcaModello(String modello, String codice_marca)
    {
        List<String> list = new ArrayList<String>();

        String query = "SELECT anno FROM " + TABELLA_MODELLI + " WHERE cod_marca = '" + codice_marca + "' AND nome = '" + modello + "'";

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(query, null);

        if (cursor.moveToFirst()) {
            do {
                list.add(cursor.getString(0));
            } while (cursor.moveToNext());
        }

        cursor.close();
        db.close();

        return list;

    }


}

E il main activity è questo:

Codice:
package com.example.cristo1985.automotive2015.app;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


public class MainActivity extends ActionBarActivity implements AdapterView.OnItemSelectedListener {

    Spinner selettore_marche;
    Spinner selettore_modello;
    Spinner selettore_anno;
    ImageView immagine_auto;

    

    private ArrayList<String> dati = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        selettore_marche = (Spinner) findViewById(R.id.selMarca);
        selettore_modello = (Spinner) findViewById(R.id.selModello);
        selettore_anno = (Spinner) findViewById(R.id.selAnno);

        /* Listener selettore marche */
        selettore_marche.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View selectedItemView, int position, long id) {

                String marca_selezionata = selettore_marche.getSelectedItem().toString();

                try {

                    caricaSpinnerModelli(marca_selezionata);

                } catch (Exception ex) {

                    Toast.makeText(parent.getContext(), "Errore durante il caricamento dei modelli: " + ex.getMessage(), Toast.LENGTH_LONG).show();

                }


            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });

        /* Listener selettore modello */
        selettore_modello.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View selectedItemView, int position, long id) {

                String modello_selezionato = selettore_modello.getSelectedItem().toString();
                String marca_selezionata = selettore_marche.getSelectedItem().toString();


                try {

                    caricaSpinnerAnni(modello_selezionato, marca_selezionata);

                } catch (Exception ex) {

                    Toast.makeText(parent.getContext(), "Errore durante il caricamento degli anni: " + ex.getMessage(), Toast.LENGTH_LONG).show();
                }

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        /* Listener selettore anno */
        selettore_anno.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View selectedItemView, int position, long id) {

                String modello_selezionato = selettore_modello.getSelectedItem().toString();
                String marca_selezionata = selettore_marche.getSelectedItem().toString();
                String anno_selezionato = selettore_anno.getSelectedItem().toString();

                try {
                    caricaMacchina(marca_selezionata, modello_selezionato, anno_selezionato);
                } catch (Exception ex) {
                    Toast.makeText(parent.getContext(), "Errore durante il caricamento degli anni: " + ex.getMessage(), Toast.LENGTH_LONG).show();
                }

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        caricaSpinnerMarche();

    }


    public void onApriDettagli(View v)
    {
        GestioneDatabase db = new GestioneDatabase(getApplicationContext());

        String codice_marca = db.getCodiceMarca(selettore_marche.getSelectedItem().toString());
        String modello = selettore_modello.getSelectedItem().toString();
        String anno = selettore_anno.getSelectedItem().toString();

        ArrayList<Pezzi> listaPezzi=new ArrayList<Pezzi>(); //lista delle persone che la listview visualizzerà

       // Pezzi [] elencoPezzi = db.getElencoPezzi(codice_marca, modello, anno);


        /*Pezzi [] elencoPezzi =  { new Pezzi("Anna","Falchi",R.drawable.creep_1),
                new Person("Cameron", "Diaz", R.drawable.creep_2),
                new Person("Jessica","Alba",R.drawable.creep_3),
                new Person("Manuela","Arcuri",R.drawable.creep_4)}; */



        /* Carica la lista dei dettagli di quella marca */
     /*   Resources res = getResources();
        String mDrawableName = "molla";
        int id = getResources().getIdentifier(mDrawableName, "drawable", getPackageName());
        Drawable drawable = getResources().getDrawable(id);
        immagine_auto.setImageDrawable(drawable);

        AlertDialog alertDialog = new AlertDialog.Builder(this).create();
        alertDialog.setTitle("TEST");
        alertDialog.setMessage("ID IMMAGINE : " + id);
        alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                //Drawable drawable = getResources().getDrawable(id);
                //immagine_auto.setImageDrawable(drawable);
            }
        });

        alertDialog.show();
        */

       /*


        List<Pezzi> pezziAutoSel = db.getPezziDB(codice_marca, modello, anno);

        ArrayList<HashMap<String, Object>> data=new ArrayList<HashMap<String,Object>>();


        for(int i=0;i<pezziAutoSel.size();i++){
            Pezzi p=pezziAutoSel.get(i);

            HashMap<String,Object> PezzMap=new HashMap<String, Object>();

            PezzMap.put("imgpezzo", p.getImgPezzo());
            PezzMap.put("codsag", p.getCodSag());
            PezzMap.put("codoe", p.getCodOe());
            PezzMap.put("imgdescrizione", p.getImgDescrizione());
            PezzMap.put("n", p.getN());
            PezzMap.put("csct", p.getCsct());
            PezzMap.put("a", p.getA());
            PezzMap.put("b", p.getB());

            data.add(PezzMap);
        }



        String[] from={"imgpezzo","codsag","codoe", "imgdescrizione", "n", "csct", "a", "b"}; //dai valori contenuti in queste chiavi
        int[] to={R.id.imgpez,R.id.txtcodsag,R.id.txtcodoe, R.id.imgdesc, R.id.txtN, R.id.txtCSCT, R.id.txtA, R.id.txtB};//agli id delle view

        //costruzione dell adapter
        SimpleAdapter adapter=new SimpleAdapter(
                getApplicationContext(),
                data,//sorgente dati
                R.layout.list_item, //layout contenente gli id di "to"
                from,
                to);

        //utilizzo dell'adapter
        ((ListView)findViewById(R.id.listaPezzi)).setAdapter(adapter); */

    }


    private void caricaMacchina(String marca_selezionata, String modello_selezionato, String anno_selezionato) {

        GestioneDatabase db = new GestioneDatabase(getApplicationContext());

        String codice_marca = db.getCodiceMarca(marca_selezionata);

        String immagine = "@drawable/";

        try {

            String auto = db.getImmagineAuto(codice_marca, modello_selezionato, anno_selezionato);

            if(auto != null) {
                immagine += auto;
            }
            else
            {
                immagine += "nondisponibile";
            }

            int imageResource = getResources().getIdentifier(immagine, null, getPackageName());

            immagine_auto= (ImageView)findViewById(R.id.immagineAuto);
            Drawable res = getResources().getDrawable(imageResource);
            immagine_auto.setImageDrawable(res);

        }catch(Exception ex) {

            AlertDialog alertDialog = new AlertDialog.Builder(this).create();
            alertDialog.setTitle("TEST");
            alertDialog.setMessage("PROBLEMA : " + ex.getMessage());
            alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // in questo punto aggiungi le tue funzioni
                }
            });

            alertDialog.show();
        }

    }

    /* OK */
    private void caricaSpinnerMarche() {
        GestioneDatabase db = new GestioneDatabase(getApplicationContext());
        List<String> labels = db.getTutteMarche();

        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, labels);

        // Drop down layout style - list view with radio button
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // attaching data adapter to spinner
        selettore_marche.setAdapter(dataAdapter);
    }



    /* OK */
    private void caricaSpinnerModelli(String marca) {


            GestioneDatabase db = new GestioneDatabase(getApplicationContext());

            String codice_marca = db.getCodiceMarca(marca);

            List<String> labels = db.getModelloDaMarca(codice_marca);

            // Creating adapter for spinner
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels);

            // Drop down layout style - list view with radio button
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            // attaching data adapter to spinner
            selettore_modello.setAdapter(dataAdapter);


    }

    private void caricaSpinnerAnni(String modello, String marca) {

        GestioneDatabase db = new GestioneDatabase(getApplicationContext());

        String codice_marca = db.getCodiceMarca(marca);


            List<String> anni = db.getAnniDaMarcaModello(modello, codice_marca);

            // Creating adapter for spinner
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, anni);

            // Drop down layout style - list view with radio button
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            // attaching data adapter to spinner
            selettore_anno.setAdapter(dataAdapter);

    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        // On selecting a spinner item
        String marca = parent.getItemAtPosition(position).toString();

        Toast.makeText(parent.getContext(), "Hai selezionato: " + marca, Toast.LENGTH_LONG).show();

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

}

Il mio problema è di visualizzare la listview al cliccare del pulsante "APRI DETTAGLI" come nel seguente esempio di immagine :

Schermata 2015-08-17 alle 14.59.12.jpg

Ossia:
1) Scelgo la marca
2) Scelgo il modello relativo alla marca
3) Scelgo l'anno relativo al modello
4) Estraggo i pezzi relativi alle scelte effettuate in una listview con immagini e testi
5) Al click di ogni elemento apro una dialogbox con dentro i dati ;)

Mi potreste dare una mano che sono alle prime armi cortesemente?

Grazie
Cristian
 

Discussioni simili