2 votes

Afficher la vue de liste dans une fenêtre contextuelle - Android

Je travaille sur un projet en Android et j'ai un problème. J'ai une activité qui comprend trois boutons, un champ texte et une liste.

description de l'image

Je veux changer cette implémentation et afficher la liste sur une nouvelle fenêtre contextuelle uniquement lorsque l'utilisateur appuie sur le bouton de sélection de tout. J'ai ajouté mon code, merci.

public class Notepadv1 extends ListActivity implements OnClickListener {

    private WordsDbAdapter mDbHelper;
    private Button selectAllButton;
    private PopupWindow mPopup;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        selectAllButton = (Button)findViewById(R.id.selectAll);
        selectAllButton.setOnClickListener(this);

        mDbHelper = new WordsDbAdapter(this);
        mDbHelper.open();
        fillData();
    }

    public void onClick(View v) {
        switch(v.getId()){
            case(R.id.selectAll):
                selectAll();
                break;
        }
    }

    private void selectAll(){
    }

    private void fillData() {

        Cursor c = mDbHelper.fetchAllNotes();
        startManagingCursor(c);

        String[] from = new String[] { WordsDbAdapter.KEY_WORD };
        int[] to = new int[] { R.id.text1 };

        SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.words_row, c, from, to);
        setListAdapter(notes);
    }

}

17voto

Montrer une boîte de dialogue d'alerte simple avec une liste :

final CharSequence[] items = {"Rouge", "Vert", "Bleu"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Choisissez une couleur");
builder.setItems(items, new DialogInterface.OnClickListener() {

   public void onClick(DialogInterface dialog, int item) {
        Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
   }

});

AlertDialog alert = builder.create();

alert.show();

10voto

Paresh Mayani Points 48123

Oui, tu peux le faire.

1ère méthode : définir une activité comme Dialog avec l'attribut ci-dessous dans le fichier AndroidManifest.xml :

2ème méthode : Vous pouvez gonfler la mise en page XML à l'intérieur de la boîte de dialogue comme ci-dessous :

Dialog dialog = new Dialog(context);
LayoutInflater li = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.my_layout, null, false);
dialog.setContentView(v);
dialog.show();

par exemple :

edit: link fixed

Dialog Android avec ListView.

0voto

Gibolt Points 4072

Si vous utilisez un ArrayAdapter personnalisé, utilisez setAdapter():

AlertDialog.Builder builder = new Builder(this)
    .setTitle("Titre du dialogue")
    .setAdapter(new CustomAdapter(context, items, ...), (dialog, itemPosition) -> {
      // Gérer le clic sur l'élément
    });
builder.show();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X