web-dev-qa-db-fra.com

ListView dans une fenêtre contextuelle

Je fais une application et utilise un adaptateur personnalisé pour ListView. Il travaille dans l'activité 

public class Adapter extends ArrayAdapter {
    Context mContext;
    int resourceID;
    ArrayList<String> names;
    public Adapter(Context context, int resource, ArrayList<String> objects) {
        super(context, resource, objects);
        this.mContext = context;
        this.resourceID=resource;
        this.names= objects;
    }

    @Override
    public String getItem(int position) {
        return names.get(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        LayoutInflater inflater = LayoutInflater.from(mContext);
        row = inflater.inflate(resourceID, parent, false);

        TextView text = (TextView) row.findViewById(R.id.text);

        text.setText(names.get(position));
        return row;
    }

}

J'ai utilisé ce code pour les faire apparaître sur une activité 

    myNames= (ListView) findViewById(R.id.List);
    adapter = new Adapter(this,R.layout.names_view, Current.Names);
    myNames.setAdapter(adapter);

maintenant, je veux cliquer sur un bouton pour faire apparaître la même liste dans une fenêtre contextuelle. Avez-vous de l'aide?

3
Esraa

Vous pouvez faire comme suit:

1) Créez une boîte de dialogue personnalisée en cliquant sur le bouton:

Button clickButton = (Button) findViewById(R.id.clickButton);
clickButton.setOnClickListener( new OnClickListener() {

        @Override
        public void onClick(View v) {

            final Dialog dialog = new Dialog(YourActivity.this);
            dialog.setContentView(R.layout.custom_dialog);
            dialog.setTitle("Title...");
            myNames= (ListView) dialog.findViewById(R.id.List);
            adapter = new Adapter(YourActivity.this,R.layout.names_view, Current.Names);
            myNames.setAdapter(adapter);
            dialog.show();

        }
    });

2) Ajoutez la liste dans la structure de la boîte de dialogue (custom_dialog.xml):

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
   xmlns:tools="http://schemas.Android.com/tools"
   Android:layout_width="match_parent"
   Android:layout_height="match_parent"
   Android:orientation="vertical">

   <ListView
      Android:id="@+id/List"
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content" >
   </ListView>

</LinearLayout>
10
tahsinRupam

custom.xml

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/listView1"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >

</ListView> 

activité

String names[] ={"A","B","C","D"};
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
                LayoutInflater inflater = getLayoutInflater();
                View convertView = (View) inflater.inflate(R.layout.custom, null);
                alertDialog.setView(convertView);
                alertDialog.setTitle("List");
                ListView lv = (ListView) convertView.findViewById(R.id.List);
                Adapter<String> adapter = new Adapter(this,R.layout.names_view, Current.Names);
                lv.setAdapter(adapter);
                alertDialog.show();
2
mahiraj2709

Vous pouvez utiliser un dialogue personnalisé

dialogue personnalisé mydialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android" 
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<ListView
    Android:id="@+id/lv"
    Android:layout_width="wrap_content"
    Android:layout_height="fill_parent"/>
</LinearLayout>

Dans votre activité

Dialog dialog = new Dialog(Activity.this);
   dialog.setContentView(R.layout.mydialog)
ListView lv = (ListView ) dialog.findViewById(R.id.lv);
dialog.setCancelable(true);
dialog.setTitle("ListView");
dialog.show();
1
Shahbaz Ansari

J'ai tapé "PopupWindow" dans google et trouvé ceci:

https://www.youtube.com/watch?v=fn5OlqQuOCk

Je ne connaissais pas PopupWindow jusqu'à présent et je recommanderais d'utiliser un dialogue, par exemple. AlertDialog avec une vue costum. 

J'espère que je pourrais aider!

0
the_dani