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ì:
Il database risulterebbe in questo modo:
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:
Ossia che verrà visualizzata in questo modo :
Ecco questo è la classe Pezzi che contiene gli elementi della lista dei pezzi :
Ho fatto bene o ho sbagliato qualcosa?
La gestione del database è questo :
E il main activity è questo:
Il mio problema è di visualizzare la listview al cliccare del pulsante "APRI DETTAGLI" come nel seguente esempio di immagine :
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
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:
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 :
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 :
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