J'ai trois spinner. Le troisième essoreur dépend du second et le second essoreur dépend du premier essoreur. les champs dans le spinner sont peuplés par une base de données sqlite externe. Maintenant, le problème est que si j'ai une énorme base de données avec des milliers d'enregistrements, dois-je écrire des conditions pour tous les milliers d'enregistrements de sorte que lorsque je clique sur la première position du premier donc sur le troisième spinner.spinner de remplissage avec base de données Sqlite externe
2
A
Répondre
2
// Ceci est ma classe Activité principale
public class MainActivity extends Activity implements OnItemSelectedListener{
private CarHelper dbcarhelper=null;
private Cursor ourCursor = null,cur=null,vercur=null;
private CarAdapter car_adapter = null;
public Spinner spinner,spinner2,spinner3,spinner4;
public String a;
@Override
protected void onCreate(Bundle savedInstanceState)
{
try
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = (Spinner)findViewById(R.id.spinner1);
spinner2=(Spinner)findViewById(R.id.spinner2);
spinner3= (Spinner)findViewById(R.id.spinner3);
dbcarhelper = new CarHelper(this);
dbcarhelper.createDatabase();
dbcarhelper.openDataBase();
ourCursor = dbcarhelper.getCursor();
startManagingCursor(ourCursor);
car_adapter = new CarAdapter(ourCursor);
spinner.setAdapter(car_adapter);
spinner.setOnItemSelectedListener(this);
startManagingCursor(cur);
spinner2.setOnItemSelectedListener(this);
startManagingCursor(vercur);
}
catch(Exception e)
{
Log.e("ERROR","ERROR IN CODE:" + e.toString());
e.printStackTrace();
}
}
class CarAdapter extends CursorAdapter
{
CarAdapter(Cursor c) {
super(MainActivity.this, c);
}
@Override
public void bindView(View row, Context ctxt, Cursor c) {
CarHolder holder= (CarHolder)row.getTag();
holder.populateFrom(c,dbcarhelper);
}
@Override
public View newView(Context ctxt, Cursor c, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.row, parent, false);
CarHolder holder= new CarHolder(row);
row.setTag(holder);
return (row);
}
}
static class CarHolder {
private TextView make = null, model= null, ver=null;
CarHolder (View row)
{
make = (TextView)row.findViewById(R.id.carText);
model = (TextView)row.findViewById(R.id.carText);
ver = (TextView)row.findViewById(R.id.carText);
}
void populateFrom(Cursor c,CarHelper r)
{
make.setText(r.getName(c));
model.setText(r.getName(c));
ver.setText(r.getName(c));
}
}
public void onItemSelected(AdapterView<?> parent, View arg1,int position,long arg3)
{
int id = parent.getId();
switch(id)
{
case R.id.spinner1:
int b = spinner.getSelectedItemPosition();
b++;
a = Integer.toString(b);
if(a!=null)
{
dbcarhelper.m_pop(a);
}
CarHelper ch = new CarHelper(getApplicationContext());
List<String> lables = ch.getAllLabels();
//ch.getAllLabels(str);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, lables);
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(dataAdapter);
break;
case R.id.spinner2:
int i = spinner.getSelectedItemPosition();
i++;
a = Integer.toString(i);
if(a!=null)
{
dbcarhelper.v_pop(a);
}
CarHelper c = new CarHelper(getApplicationContext());
List<String> lable = c.getAllLabel();
ArrayAdapter<String> dAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, lable);
dAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner3.setAdapter(dAdapter);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
1
// Ceci est ma classe d'aide
public class CarHelper extends SQLiteOpenHelper{
private static final String DATABASE_PATH= "//data//data//com.example.dropdown//databases//";
private static final String DATABASE_NAME= "car_Database.sqlite";
private static final int SCHEMA_VERSION =1;
public static final String COLUMN_ID = "_id";
public static final String TABLE_NAME = "Make";
public static final String COLUMN_TITLE = "car_make";
public static final String TABLE_MODEL = "Model";
public static final String COLUMN_MODEL = "car_model";
public static final String TABLE_VER = "Version";
public static final String COLUMN_VER = "car_ver";
public SQLiteDatabase dbsqlite,db1;
private final Context myContext;
public CarHelper(Context context) {
super(context, DATABASE_NAME, null, SCHEMA_VERSION);
this.myContext = context;
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
public void createDatabase()
{
createDB();
}
private void createDB()
{
boolean dbExist = DBExists();
if(!dbExist)
{
this.getReadableDatabase();
copyDBFromResource();
}
}
private boolean DBExists()
{
SQLiteDatabase db = null;
try
{
String databasePath = DATABASE_PATH + DATABASE_NAME;
db = SQLiteDatabase.openDatabase(databasePath,null, SQLiteDatabase.OPEN_READWRITE);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
db.setVersion(1);
}
catch(SQLiteException e)
{
Log.e("AqlHelper","database not found");
}
if(db!=null)
{
db.close();
}
return db!=null ? true : false;
}
private void copyDBFromResource()
{
InputStream ip = null;
OutputStream op = null;
String dbFilePath = DATABASE_PATH + DATABASE_NAME;
try
{
ip= myContext.getAssets().open(DATABASE_NAME);
op = new FileOutputStream(dbFilePath);
byte[] buffer = new byte[1024];
int length;
while((length = ip.read(buffer))>0)
{
op.write(buffer, 0, length);
}
op.flush();
op.close();
ip.close();
}
catch(IOException e)
{
throw new Error("Problemcopying database from Resource");
}
}
public void openDataBase() throws SQLException
{
String myPath = DATABASE_PATH + DATABASE_NAME;
dbsqlite = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}
@Override
public synchronized void close()
{
if(dbsqlite != null)
{
dbsqlite.close();
}
super.close();
}
public Cursor getCursor()
{
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables(TABLE_NAME);
String[] asColumnsToReturn = new String[] {COLUMN_ID,COLUMN_TITLE};
Cursor mCursor = queryBuilder.query(dbsqlite, asColumnsToReturn, null, null, null, null, "car_make ASC");
return mCursor;
}
public void m_pop(String st){
String a = st;
dbsqlite.execSQL("delete from temp");
dbsqlite.execSQL("insert into temp(name) select car_model from Model where make_id="+a);
}
public List<String> getAllLabels(){
List<String> labels = new ArrayList<String>();
String selectQuery = "select name from temp";
dbsqlite = this.getReadableDatabase();
Cursor cursor = dbsqlite.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
labels.add(cursor.getString(cursor.getColumnIndex("name")));
} while (cursor.moveToNext());
}
cursor.close();
dbsqlite.close();
return labels;
}
public void v_pop(String st){
String a = st;
dbsqlite.execSQL("delete from temp");
dbsqlite.execSQL("insert into temp(name) select car_ver from Version where _id="+a);
}
public List<String> getAllLabel(){
List<String> label = new ArrayList<String>();
String selectQuery = "select name from temp";
dbsqlite = this.getReadableDatabase();
Cursor cursor = dbsqlite.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
label.add(cursor.getString(cursor.getColumnIndex("name")));
} while (cursor.moveToNext());
}
cursor.close();
dbsqlite.close();
return label;
}
public String getName(Cursor c){
return (c.getString(1));
}
}
Questions connexes
- 1. Android base de données SQLITE et spinner
- 2. Données de base: Pré-remplissage de l'entité SQLite avec l'image
- 3. Spinner avec base de données sqlite dans Android
- 4. Accéder à la base de données SQLite externe avec Android?
- 5. iOS: remplissage tableView de base de données SQLite
- 6. Erreur lors du remplissage de la base de données sqlite
- 7. Spinner dynamique utilisant la base de données SQLite
- 8. Remplissage d'une liste à partir d'une base de données SQLite
- 9. Problèmes avec l'affichage des données de la base de données SQLite dans spinner [Android]
- 10. Remplissage de la base de données
- 11. Xcode UIWebView avec base de données SQLite
- 12. Remplissage d'un spinner avec une requête db
- 13. Erreur avec la prise de données spinner base de données
- 14. spinner de remplissage basé sur une autre sélection de spinner
- 15. données montrent spinner base de données
- 16. remplissage Modèle de données de base avec des données
- 17. Android Studio - extraient des données de base de données SQLite et insérer dans Spinner
- 18. base de données SQLite
- 19. base de données sqlite
- 20. base de données SQLite
- 21. base de données Utilisation avec l'iPhone comme spinner avec Android
- 22. Base de données SQLite avec FMDatabase Wrapper
- 23. Base de données SQLite, objets avec Bitmap
- 24. Données de base avec plusieurs fichiers sqlite
- 25. Android spinner de sqlite - meilleure méthode?
- 26. Requête concernant les opérations de base de données avec spinner
- 27. collections imbriquées de Remplissage base de données
- 28. Base de données spinner/sqlite Android - obtention de la position du curseur pas contenu!
- 29. Base de données Android SQLite
- 30. Remplissage de ArrayList JSON dans Spinner