[Android] Spinner - Défilement

souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015 - Modifié par BunoCS le 16/03/2015 à 11:22
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015 - 22 mars 2015 à 10:30
Bonjour,
j'arrive a ajouter mes données a partir du spinner dans l base de données et j'arrive aussi a recuperer , les données specifiques a un produit grace a son "code" , vers le spinner.

mais maintenant, j'ai un autre souci qui est:
je veux faire defiler la liste des produits que j'ai enregistrer avec un 4 boutons (bouton 1 : pour m'afficher le premier enregistrement
bouton 2 : pour m'afficher le dernier enregistrement
bouton 3 et bouton 4: pour m'afficher les enregistrement apré le premier et avant le dernier enregistrement).... j'arrive a le faire avec les editText mais pas avec le spinner!
voici mes 4méthodes : pour aller vers le premier,dernier, précédent et suivant enregistrement dans la table produit :

public void premierProduit(View view){

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

c = bd.rawQuery("select * from Produits order by code asc ", null);

if (c.moveToFirst()) {
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));


}
else
Toast.makeText(this, "Aucun enregistrement effectué" ,Toast.LENGTH_SHORT).show();
bd.close();
}


public void precedentProduit(View view){

try {
if (!c.isFirst()) {
c.moveToPrevious();
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));

} else
Toast.makeText(this, "Début de la liste",Toast.LENGTH_SHORT).show();
}catch (Exception e){
e.printStackTrace();
}
}


je ne sais pas comment ajouter l'appel pour mon spinner!!
merci


public void suivantProduit(View view){
try {
if (!c.isLast()) {
c.moveToNext();
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));

} else
Toast.makeText(this, "Fin de la liste",Toast.LENGTH_SHORT).show();
}catch (Exception e){
e.printStackTrace();
}
}

public void dernierProduit(View view){

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

c = bd.rawQuery("select * from Produits order by code asc ", null);
if (c.moveToLast()) {
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));

} else
Toast.makeText(this, "Aucun enregistrement effectué" ,Toast.LENGTH_SHORT).show();
bd.close();
}


Edit: rajout des balises code...Plus d'infos ici
A voir également:

9 réponses

BunoCS Messages postés 15371 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 2 juin 2023 102
16 mars 2015 à 10:58
Je ne comprends pas ce que tu veux faire...
Tu veux faire défiler, les textes dans ton Spinner?

tonSpinner.setSelection(position);

0
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
16 mars 2015 à 11:41
ce que je veux faire c'est quand je clique sur mon bouton1 par exemple pour afficher le dernier enregistrement effectué, je voudrais qu'il me récupére tous les champs saisis dans les editText et dans le spinner..
Ceux des editText je les récupére normalement mais la donnée dans le spinner, je ne sais ps comment l'afficher dans ce dernier!
0
BunoCS Messages postés 15371 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 2 juin 2023 102
16 mars 2015 à 11:50
Peux-tu être un peu plus clair?
Tu mélanges récupération des données dans Spinner (donc, à partir de getSelection()) et affichage dans ce dernier...
0
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
16 mars 2015 à 12:06
dans mon interface, j'ai 3 editText (code, designation, prix) et 1 spinner (famille produit)
code, designation, prix et famille produit sont des champs de l table "produit".

famille produit est une foreign key et est egale à : code famille
puisque j'ai une autre table "famille-prod" qui contient les champs (code famille, nomFamille)

dc dans mon interface graphique, l'ajout et la récupération des données de la base se font sans probléme (la récupération, je la fais par "code").

maintenant, j'ai 4 bouttons que je veux utiliser pour afficher le premier, dernier, précédent avant le dernier, suivant après le premier enregistrement effectué dans l table "produit".
qd je clique sur ces boutons, ils m'affichent toutes les données que j'ai enregistrées dans la table "produit" sans problème mais seulement celles que j'ai fait entrer en editText(cad, code, designation,prix) mis pas celle du spinner (parce que je ne sais pas comment l'afficher!)!

j'espére que je suis assez claire!
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
16 mars 2015 à 12:07
normlement dans mon code (les 4 méthodes c'est clair) juste que je n'ai pas encore fais pour mon spinner prce que je ne sais pas comment procéder!)
0
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
17 mars 2015 à 13:32
aidez moi svp pour mon pblm précédent parce que je n'avance pas du tt!!
0
BunoCS Messages postés 15371 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 2 juin 2023 102
17 mars 2015 à 14:12
Tu veux changer la sélection courante de ton Spinner, c'est ça?

Ceci ne te convient pas?
tonSpinner.setSelection(position);

0
ce n'est pas que ça ne me convienne pas, c'est que je ne sais pas où la mettre ton instruction!

il y a 4 methodes
premierproduit (pour afficher le premier produit que j'ai enregistré dans la table en BDD)
dernierproduit(pour afficher le dernier produit que j'ai enregistré dans la table en BDD)
precedentproduit et suivantproduit pour afficher les données qui se trouve entre le premier et le dernier enregistrement dans la base de données)
ces 4 méthodes sont liées à 4 bouttons pour effectuer ces opérations .
(je ne sais pas comment faire pour afficher la données que j'ai enregistrée dans les 2spinner!! pour les editText yapa de souci!)

voici mon code (j'ai ajouter un autre spinner pour 'modele produit')

public class Produits extends Activity {

private EditText edit1, edit2, edit3;
Cursor c;
Button btnListP, btnFamille, btnModele;
Spinner spinFam, spinMod;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_produits);

edit1 = (EditText) findViewById(R.id.code);
edit2 = (EditText) findViewById(R.id.designation);
edit3 = (EditText) findViewById(R.id.prix);

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this, "factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();


Cursor c = bd.rawQuery("select * from Famille", null);

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item, c,
new String[] { "dFam" }, new int[] { android.R.id.text1 });
// set layout for activated adapter
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinFam = (Spinner)findViewById(R.id.spinFam);
spinFam.setAdapter(adapter);

Cursor c1 = bd.rawQuery("select * from Modele", null);

SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item, c1,
new String[] { "dMod" }, new int[] { android.R.id.text1 });
// set layout for activated adapter
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinMod = (Spinner)findViewById(R.id.spinMod);
spinMod.setAdapter(adapter2);


btnListP = (Button)findViewById(R.id.button7);
btnListP.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Produits.this, Liste_des_Produits.class);
startActivity(intent);
}
});

btnFamille = (Button)findViewById(R.id.btnFamille);
btnFamille.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Produits.this, Famille_Produits.class);
startActivity(intent);
}
});

btnModele = (Button)findViewById(R.id.btnModele);
btnModele.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Produits.this, Modeles_Produits.class);
startActivity(intent);
}
});
}

public void ajouterProduit(View v) {

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this, "factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

String code = edit1.getText().toString();
String designation = edit2.getText().toString();
String prix = edit3.getText().toString();
long spinF = spinFam.getSelectedItemId();
long spinM = spinMod.getSelectedItemId();


Cursor cursor = bd.rawQuery("select * from Produits where code=" + code, null);
if (!cursor.moveToFirst()) {

ContentValues values = new ContentValues();
values.put("code", code);
values.put("designation", designation);
values.put("prix", prix);
values.put("famille", spinF );
values.put("modele", spinM);

bd.insert("Produits", null, values);
bd.close();

edit1.setText("");
edit2.setText("");
edit3.setText("");

Toast.makeText(this, "Le produit " + designation + " a été ajouté à la liste", Toast.LENGTH_SHORT).show();
}
else
{
bd.close();
Toast.makeText(this, "Le produit " + designation + " existe déjà", Toast.LENGTH_SHORT).show();
}
}


public void consulterProduit(View v) {

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

String code = edit1.getText().toString();
//Cursor cursor = bd.rawQuery( "select code,designation,prix,famille,modele from Produits where code=" + code, null);
Cursor cursor = bd.rawQuery( "select P.code, P.designation, P.prix, P.famille, P.modele, F._id, F.dFam, M._id, M.dMod from Produits P, Famille F, Modele M where P.famille = F._id and P.modele = M._id and P.code=" + code, null);

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,cursor,new String[] { "dFam" }, new int[] { android.R.id.text1 });
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,cursor,new String[] { "dMod" }, new int[] { android.R.id.text1 });
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

if (cursor.moveToFirst())
{
edit2.setText(cursor.getString(1));
edit3.setText(cursor.getString(2));
spinFam.setAdapter(adapter);
spinMod.setAdapter(adapter2);

}
else
Toast.makeText(this, "Il n'existe pas de produit avec ce code" , Toast.LENGTH_SHORT).show();
bd.close();
}


public void supprimerProduit(View v) {

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

String code = edit1.getText().toString();
int cant = bd.delete("Produits", "code=" + code, null);
bd.close();
edit1.setText("");
edit2.setText("");
edit3.setText("");


if (cant == 1)
Toast.makeText(this, "Le produit a été supprimé de la liste",Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "Le produit n'existe pas",Toast.LENGTH_SHORT).show();
}


public void modifierProduit(View v) {

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

String code = edit1.getText().toString();
String designation = edit2.getText().toString();
String prix = edit3.getText().toString();
String famille = spinFam.getSelectedItem().toString();
String modele = spinMod.getSelectedItem().toString();

ContentValues values = new ContentValues();
values.put("designation", designation);
values.put("prix", prix);
values.put("famille", famille);
values.put("modele", modele);

int cant = bd.update("Produits", values, "code=" + code, null);
bd.close();
if (cant == 1)
Toast.makeText(this, "Données modifiées du produit" +designation, Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "Le produit n'existe pas",Toast.LENGTH_SHORT).show();
}

/*
public void afficherListeProduit(View view)
{
MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getReadableDatabase();

Cursor c = bd.rawQuery("SELECT * from Produits", null);
int count = c.getCount();
c.moveToFirst();

TableLayout tableLayout = new TableLayout(getApplicationContext());
tableLayout.setVerticalScrollBarEnabled(true);

TableRow tableRow;
TextView textCode,textDesign,textPrix,textFamille,textModele,codeView,designView,prixView,familleView,modeleView;

tableRow = new TableRow(getApplicationContext());
textCode = new TextView(getApplicationContext());
textCode.setText("CodeP");
textCode.setTextColor(Color.BLACK);
textCode.setTypeface(null, Typeface.BOLD);
textCode.setPadding(10, 10, 10, 10);
tableRow.addView(textCode);

textDesign = new TextView(getApplicationContext());
textDesign.setText("Designation");
textDesign.setTextColor(Color.BLACK);
textDesign.setTypeface(null, Typeface.BOLD);
textDesign.setPadding(10, 10, 10, 10);
tableRow.addView(textDesign);

textPrix = new TextView(getApplicationContext());
textPrix.setText("Prix");
textPrix.setTextColor(Color.BLACK);
textPrix.setTypeface(null, Typeface.BOLD);
textPrix.setPadding (10, 10, 10, 10);
tableRow.addView(textPrix);

textFamille = new TextView(getApplicationContext());
textFamille.setText("Famille");
textFamille.setTextColor(Color.BLACK);
textFamille.setTypeface(null, Typeface.BOLD);
textFamille.setPadding(10, 10, 10, 10);
tableRow.addView(textFamille);

textModele = new TextView(getApplicationContext());
textModele.setText("Modele");
textModele.setTextColor(Color.BLACK);
textModele.setTypeface(null, Typeface.BOLD);
textModele.setPadding(10, 10, 10, 10);
tableRow.addView(textModele);

tableLayout.addView(tableRow);

for (Integer j = 0; j < count; j++)
{
tableRow = new TableRow(getApplicationContext());

codeView = new TextView(getApplicationContext());
codeView.setText(c.getString(c.getColumnIndex("code")));

designView = new TextView(getApplicationContext());
designView.setText(c.getString(c.getColumnIndex("designation")));

prixView = new TextView(getApplicationContext());
prixView.setText(c.getString(c.getColumnIndex("prix")));

familleView = new TextView(getApplicationContext());
familleView.setText(c.getString(c.getColumnIndex("famille")));

modeleView = new TextView(getApplicationContext());
modeleView.setText(c.getString(c.getColumnIndex("modele")));

codeView.setPadding(10, 10, 10, 10);
designView.setPadding(10, 10, 10, 10);
prixView.setPadding(10, 10, 10, 10);
familleView.setPadding(10, 10, 10, 10);
modeleView.setPadding(10, 10, 10, 10);

tableRow.addView(codeView);
tableRow.addView(designView);
tableRow.addView(prixView);
tableRow.addView(familleView);
tableRow.addView(modeleView);

tableLayout.addView(tableRow);

c.moveToNext() ;

}

setContentView(tableLayout);
bd.close();
}
  • /


public void premierProduit(View view){

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();



c = bd.rawQuery("select * from Produits order by code asc ", null);

if (c.moveToFirst()) {
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));



}
else
Toast.makeText(this, "Aucun enregistrement effectué" ,Toast.LENGTH_SHORT).show();
bd.close();
}


public void precedentProduit(View view){

try {
if (!c.isFirst()) {
c.moveToPrevious();
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));

} else
Toast.makeText(this, "Début de la liste",Toast.LENGTH_SHORT).show();
}catch (Exception e){
e.printStackTrace();
}
}


public void suivantProduit(View view){
try {
if (!c.isLast()) {
c.moveToNext();
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));


} else
Toast.makeText(this, "Fin de la liste",Toast.LENGTH_SHORT).show();
}catch (Exception e){
e.printStackTrace();
}
}

public void dernierProduit(View view){

MaBaseSQLiteOpenHelper bdd = new MaBaseSQLiteOpenHelper(this,"factBDD", null, 1);
SQLiteDatabase bd = bdd.getWritableDatabase();

c = bd.rawQuery("select * from Produits order by code asc ", null);


if (c.moveToLast()) {
edit1.setText(c.getString(0));
edit2.setText(c.getString(1));
edit3.setText(c.getString(2));


} else
Toast.makeText(this, "Aucun enregistrement effectué" ,Toast.LENGTH_SHORT).show();
bd.close();
}


public void onResetProduit(View view){
edit1.setText("");
edit2.setText("");
edit3.setText("");

}


@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_produits, 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);
}
}
0
BunoCS Messages postés 15371 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 2 juin 2023 102
Modifié par BunoCS le 18/03/2015 à 13:31
ce n'est pas que ça ne me convienne pas, c'est que je ne sais pas où la mettre ton instruction!

Bah, moi non plus, étant donné que je ne comprends pas ce que tu veux faire... On fait comment du coup?
;)

Pourquoi ne pas le mettre là où tu modifies tes EditTexts?

Ah, et essaies de faire un effort sur l'utilisation des balises code, s'il te plait... Plus d'infos ici
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
0
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
18 mars 2015 à 14:09
je vais essayer d'expliquer encore plus avec un exemple:

mes données des tables sont

ma table famille contient 2 famille:
famille1(code=1,nomFam=fam1)
famille2(code=2,nomFam=fam2)

ma table modele contient 3 modele:
modele1(code=1,nomMod=mod1)
modele2(code=2,nomMod=mod2)
modele3(code=3,nomMod=mod3)

ma table produit contient 3 produits:
produit1 (code=1,designation=prod1,prix=10.20,famille=1,modele=3)
produit2 (code=2,designation=prod2,prix=23.25,famille=2,modele=3)
produit3 (code=3,designation=prod3,prix=14.15,famille=2,modele=2)

où: dans le produit1 famille=1(code de fam1 dans la table famille),modele =3(mod3 dans la table modele)

mon interface est comme ceci:
code: <<<editText1>>>
designation: <<<editText2>>>
prix: <<<editText3>>>
famille:<<<spinner1>>>
modele:<<<spinner2>>>

je vais commencer dans cet ordre par exemple:

quand j'appuie sur le bouton "premierproduit" qui est lié a la méthode 'premierproduit' je dois avoir dans mon interface qui m'affiche :
code:1
designation: prod1
prix: 10.20
famille: fam1
modele: mod3

quand j'appuie sur le bouton "suivantproduit" qui est lié a la méthode 'suivantproduit' je dois avoir dans mon interface :
code:2
designation: prod2
prix: 23.25
famille: fam2
modele: mod3

quand j'appuie sur le bouton "precedentproduit" qui est lié a la méthode 'precedentproduit' je dois avoir dans mon interface :
code:3
designation: prod3
prix: 14.15
famille: fam2
modele: mod2

et quand j'appuie sur le bouton "dernierproduit" qui est lié a la méthode 'dernierproduit' je dois avoir dans mon interface qui m'affiche:
code:3
designation: prod3
prix: 14.15
famille: fam2
modele: mod2

pour les editText je n'ai pas de souci concernant l'affichage des données mais pour les spinners je ne sais pas comment faire!

voila, j'espére que c'est plus clair, parce que j'ai vraiment besoin d'aide!
merci
0
BunoCS Messages postés 15371 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 2 juin 2023 102
18 mars 2015 à 14:36
Ton exemple est faux...ou bien tes méthodes sont mal nommées.
Peu importe... Tu veux changer les données de ton interface dans les méthodes xxxProduit(). ok. Tu le fais bien pour les EditText, il me semble donc qu'il faut le faire aussi pour les Spinner. As tu essayé la méthode
setSelection()
?
0
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
18 mars 2015 à 15:10
pour utiliser cette méthode je dois utiliser setSelection(position); et position, je ne sais pas comment le définir dans mon cas!!
0
BunoCS Messages postés 15371 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 2 juin 2023 102
18 mars 2015 à 15:29
aah....c'est ça qui te bloque?
Si tu fais un getSelectedItemPosition() pour récupérer la position courante et tu fais un +/- 1 pour suivant/précédent. Pour premier, c'est 0 et pour dernier, c'est "size-1" (à adapter à tes structures)
0
souadkhel Messages postés 19 Date d'inscription jeudi 12 mars 2015 Statut Membre Dernière intervention 8 juillet 2015
18 mars 2015 à 15:40
est ce que tu pourrais me donner un bout de code que je pourrais utiliser?? parce que la je desespére completement!!
0