2011-01-03 5 views
1

J'ai une liste avec quelques chaînes en ce moment. quand un utilisateur en sélectionne un, il affiche une boîte de dialogue d'alerte qui donne la possibilité de réserver (cela va être une application de taxi) ou d'annuler. Ce que je ne peux pas savoir, c'est comment l'obtenir de sorte que lorsque l'utilisateur clique sur "Livre", il prend les informations qu'ils ont sélectionnées et charge une nouvelle vue avec plus d'informations de contact.Android - Modifier Affichage en cliquant sur le bouton alertdialog

Mon code est en ce moment -

ListTaxi public class {étend ListActivity /** Appelée lorsque l'activité est créée. */ public void onCreate (groupe savedInstanceState) { super.onCreate (savedInstanceState); N'importe quelle aide ou pointeurs avec ceci serait immensément apprécié car c'est le dernier peu que j'ai besoin de travailler avant qu'il soit presque fini.

Merci à tous

Oli

Répondre

0

Vous devez placer un onClickListener sur votre bouton positif, ce qui lancera la nouvelle activité et lui transmettra les données. Votre code deviendrait quelque chose comme:

public class ListTaxi extends ListActivity{ /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    final String[] taxi = getResources().getStringArray(R.array.taxi_array); 
    setListAdapter(new ArrayAdapter<String>(this, R.layout.listtaxi, taxi)); 

    final ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 

    lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> a, View v, int position, long id) 
    { 
     final int selectedPosition = position; 
     AlertDialog.Builder adb=new AlertDialog.Builder(ListTaxi.this); 
     adb.setTitle("Taxi Booking"); 
     adb.setMessage("You have chosen = "+lv.getItemAtPosition(position)); 
     adb.setPositiveButton("Book", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       Intent intent = new Intent(getApplicationContext(), NextActivity.class); 
       intent.putExtra("booking", taxi[selectedPosition]; 
       startActivity(intent); 
      } 
     }); 
     adb.setNegativeButton("Cancel", null); 
     adb.show(); 
    } 
}); 

Dans votre activité cible, ont quelque chose comme ceci:

Intent intent = getIntent(); 
String booking = ""; 
if (intent != null) { 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     booking = extras.getString("booking"); 
    } 
} 
+0

Bravo pour ça! ressemble à un codage solide. Question rapide si je peux, j'ai mis le code et changé l'activité suivante à ma classe à laquelle il va. Il semble continuer à venir avec des erreurs lorsque je crée une nouvelle intention? – Oli

+0

oups oublié - code ci-dessous Intention intention = nouvelle intention (this, Booking.class); intention.putExtra ("réservation", lv.getItemAtPosition (position)); – Oli

+0

ah, 'getItemAtPosition (position)' va retourner un 'Object', donc vous devrez obtenir votre valeur appropriée de' Object' et la passer dans 'putExtra' –

0

Une façon pourrait être d'obtenir votre article de votre liste de taxi:

taxi.get(position); 

et passer dans l'intention d'une prochaine activité:

Intent intent = new Intent(this, YOUR_NEXT_ACTIVITY.class);  
intent.putExtra("booking", taxi.get(position); 

sur l'activité suivante vous pouvez l'obtenir avec:

intent = getIntent(); 
inten.getExtra("booking"); 
// could be (not sure): inten.getExtraString("booking"); 
+0

merci! J'ai une pièce de théâtre et je reviens vers vous. tu es ma personne préférée en ce moment! – Oli

+0

comment l'appellerais-je de la prochaine activité? Je ne peux pas le faire pour reconnaître le bit de la méthode d'intention. Cheers – Oli

+0

appelez quoi? l'intention? un bon moyen est également de commencer une activité pour le résultat ... dites-moi si vous êtes interessé ... je peux poster un exemple – Beasly

0

Vous pouvez utiliser cette méthode de la classe AlertDialog

public void setButton (int whichButton, CharSequence text, DialogInterface.OnClickListener listener) 

Référez lien http://developer.android.com/reference/android/app/AlertDialog.html selon la réponse positive, disons livre est réponse positive alors commencer une autre activité qui affiche les informations coordonnées, passer l'élément sélectionné de la liste comme Bundle ou extra avec l'intention de commencer une autre activité.

Questions connexes