2016-04-09 10 views
0

Ich habe einen benutzerdefinierten Array-Adapter für meine Listview erstellt. Es hat einen Spielernamen und die Punktzahl, ich habe auch eine Schaltfläche zum Hinzufügen auf der Zelle, wenn diese Schaltfläche angeklickt wird Ich möchte einen Popup-Bildschirm angezeigt werden, Hier ist, wo der Benutzer die Punktzahl des Spielers hinzufügen kann. Dieses Popup-Fenster hat 6 Knöpfe "+1", "+2" "+10" ..etc und eine Fertig-Taste. Wenn Sie auf die Schaltfläche Fertig klicken, wird der Punktestand aktualisiert.Popup-Fenster auf einem ListView Android

Ich bin mit dem Hinzufügen Schaltfläche klicken Ereignis auf meiner CustomArraryAdapter-Klasse, so muss ich auch hier das Popup erstellen. Ich habe gesucht und versucht, dies ohne Erfolg zu tun.

Was ich bisher versucht: habe ich ein View = convertView und ein viewHolder = holder Das Problem, das ich nicht so sicher ist, bin, was als Parameter zu übergeben ein Popup zu erstellen. Der folgende Code ist meineCustomArrayAdapter-Klasse. Ich habe auch gelesen, Popups können Touch-Events nicht behandeln, aber einige sagen, dass es möglich ist. Da mein Popup viele Knöpfe hat, könnte dies eine großartige Lösung sein.

Dies ist in @Override Öffentlichkeit getView (final int Position, Ansicht convertView, Viewgroup Eltern) Methode in CustomArrayAdapter Klasse

//Handle add button click 
holder.add.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     addScores(convertView); 

     //list gets updated 
     notifyDataSetChanged(); 


    } 

}); 

Meine addScores Verfahren wie dieses enter image description here

sieht
private void addScores(View v){ 
     PopupWindow pw; 
     LayoutInflater inflater = (LayoutInflater)v.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.weight_popup, (ViewGroup)v.findViewById(R.id.linlay_weight_popup)); 
     pw = new PopupWindow(layout, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); 
     pw.setBackgroundDrawable(new BitmapDrawable()); 
     pw.setOutsideTouchable(true); 
     pw.showAsDropDown(btnSelectWeight); 

    } 
+0

Sie können den Kontext von Adapter übergeben. Von dort aus können Sie mit der Methode LayoutInflator.from (context) ein LayoutInflator-Objekt erstellen. – Krish

+0

Können Sie eine Lösung mit Code bereitstellen? Ich habe versucht, Context jetzt zu übergeben, aber ich bekomme immer noch roten Text auf getSystemService, und ist es wahr, nicht Touch/Click-Ereignis im Popup-Fenster zu behandeln? –

+0

Überprüfen Sie diesen Link https://androidresearch.wordpress.com/2012/05/06/how-to-create-popups-in-android/ – Krish

Antwort

0

Sie können Ansicht übergeben, die in Popup auf die gleiche Weise angezeigt werden machen.

Bedenken Sie:

View layout = inflater.inflate(R.layout.weight_popup, (ViewGroup)v.findViewById(R.id.linlay_weight_popup)); 

Ihre weight_popup Layout 6 Tasten enthalten sollte, die onClick dort haben würden Sie Partituren aktualisieren. Etwas wie:

Button btn1 = (Button)layout.findViewById(R.id.btn1); 
btn1.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        //update your score here. 
       } 
      }); 

//other buttons.. 

pw = new PopupWindow(layout, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); 
Verwandte Themen