2010-08-13 7 views
0

J'essaie d'obtenir ma vue de liste pour ouvrir une boîte de dialogue d'alerte pour afficher des informations lorsqu'un utilisateur clique sur une sélection. J'ai essayé plusieurs choses différentes sur le site Google Developers qui ont à voir avec cela, mais je n'ai pas encore trouvé de résultat. Voici mon code.ListView ouvrir une boîte de dialogue (ou une boîte de dialogue d'alerte)

package table.periodic; 

import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; 

public class Anions extends Activity {  AlertDialog.Builder builder; AlertDialog alertDialog;  String[] anions ={   "Acetate", "Bromide", "Carbonate", "Chlorate", "Chloride", "Chlorite", "Chromate",    "Cyanide", "Dichromate", "Fluoride", "Hexacyanoferrate(II)", "Hexacyanoferrate(III)",   "Hydride", "Hydrogen Carbonate", "Hydrogen Sulfate", "Hydroxide", "Hypochlorite",   "Iodide", "Nitrate", "Nitrite", "Oxide", "Perchlorate", "Permanganate", "Peroxide",    "Phosphate", "Sulfate", "Sulfide", "Sulfite" };  public void onCreate(Bundle icicle){  super.onCreate(icicle);   setContentView(R.layout.anions); 
       ListView list=(ListView)findViewById(R.id.anionlist); 
     list.setTextFilterEnabled(true); 

     ArrayAdapter<String> aa=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, anions); 

     list.setAdapter(aa); 

     list.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
         String itemText = anions[arg2]; 

     new AlertDialog.Builder(Anions.this); 
      Context mContext = getApplicationContext(); 
      Dialog dialog = new Dialog(mContext); 
       dialog.setContentView(R.layout.custom_dialog); 
       dialog.setTitle(itemText); 

       ImageView image = (ImageView) dialog.findViewById(R.id.image); 
       image.setImageResource(R.drawable.hydrogen); 



     } 

     }); 
      } 

    } 

Répondre

0

Au lieu d'utiliser getApplicationContext() votre activité en tant que contexte Anions.this

Ne pas oublier d'appeler .create() et .show()

Par exemple, cela fonctionne pour moi:

new AlertDialog.Builder(this).setTitle(R.string.contact_groups_add) 
      .setView(addView).setPositiveButton(R.string.ok, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int whichButton) { 

         } 
        }).setNegativeButton(R.string.cancel, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int whichButton) { 

         } 
        }).show(); 
+0

Je n'obtiens aucune boîte de dialogue. J'ai encore du mal à comprendre comment cela fonctionne, car il semble que ce que j'ai doit fonctionner mais n'est pas. Avez-vous d'autres idées? –

+0

Le code ci-dessus fonctionne définitivement. Ce qui manque à votre code est probablement la méthode show(). Vérifiez dans une activité à la maison simple et vous verrez la boîte de dialogue apparaît. – Pentium10

0

Salut ci-dessous le code travaille pour moi

package com.example.slide; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 

public class MainActivity extends Activity {  
    AlertDialog.Builder builder; 
    AlertDialog alertDialog;  
    String[] anions ={"Acetate", "Bromide", "Carbonate", "Chlorate", "Chloride", "Chlorite", "Chromate" };  
    public void onCreate(Bundle icicle){ 
     super.onCreate(icicle);  
     setContentView(R.layout.activity_main); 
     ListView list=(ListView)findViewById(R.id.listView); 
     list.setTextFilterEnabled(true); 

     ArrayAdapter<String> aa=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, anions); 
     list.setAdapter(aa); 
     list.setOnItemClickListener(new OnItemClickListener() { 

      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { 
       String itemText = anions[arg2]; 

       //new AlertDialog.Builder(MainActivity.this); 
       //Context mContext = getApplicationContext(); 
       Dialog dialog = new Dialog(MainActivity.this); 
       dialog.setContentView(R.layout.row); 
       dialog.setTitle(itemText); 

       ImageView image = (ImageView) dialog.findViewById(R.id.imageView); 
       image.setImageResource(R.drawable.ic_launcher); 
       dialog.show(); 
      } 
     }); 
    } 
} 
Questions connexes