2016-04-09 24 views
0

Liste listem için özel bir arrayadapter oluşturdum. Bir oyuncu ismi ve skoru var, ayrıca hücrede bir düğme var, o buton tıklandığında görünmek için bir açılır pencere istiyorum, Burada oyuncu oyuncu puanı ekleyebileceğiniz yer. Bu açılır pencerede 6 düğmeli "+1", "+2" "+10" ..etc ve bitmiş bir düğme var. Bitti düğmesine tıklandığında skor güncellenir.Liste Görünümünde Açılır Penceresi Açılır Android

Benim customArraryAdapter sınıfımdaki add button click olayıyla ilgileniyorum, bu yüzden pop-up'ı da burada oluşturmalıyım. Bunu başarıya ulaşmadan araştırdım ve denedim. Şu ana kadar çalıştığım şey

: Ben View = convertView ve problem ben bir halk yaratmayı parametre olarak geçirmek için ne kadar emin değilim bir viewHolder = holder var. Aşağıdaki kod myCustomArrayAdapter sınıfıdır. Ayrıca, pop-up'ların dokunma olaylarını ele alamayacağını da okudum, ancak bazıları bunu yapabileceğini söylüyor. Pop-up'ım çok fazla butona sahip olduğundan belki bu harika bir çözüm olabilir.

Bu

@Override içindedir kamu Görünüm GetView (nihai int pozisyonu, Görünüm convertView, ViewGroup ebeveyn) Yöntem CustomArrayAdapter Sınıf

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

    @Override 
    public void onClick(View arg0) { 

     addScores(convertView); 

     //list gets updated 
     notifyDataSetChanged(); 


    } 

}); 

Benim addScores yöntem bu enter image description here

benziyor
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

Bağlamı bağdaştırıcıdan geçirebilirsiniz. Buradan LayoutInflator.from (context) yöntemini kullanarak LayoutInflator nesnesini oluşturabilirsiniz. – Krish

+0

Kod ile bir çözüm sağlayabilir misiniz? Şu anda Bağlamı geçmeyi denedim ama hala getSystemService üzerinde kırmızı metinler alıyorum ve açılır pencerede dokunma/tıklama olayını işlemek konusunda doğru mu? –

+0

Bu bağlantıyı kontrol edin https://androidresearch.wordpress.com/2012/05/06/how-to-create-popups-in-android/ – Krish

cevap

0

Açılır pencerede görüntülenecek Görünümü, aynı şekilde geçirebilirsiniz yap.

bu düşünün:

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

Kişisel weight_popup düzeni 6 düğmeler, orada onClick var sen puanlarını güncelliyorduk içermelidir. Şunlar gibi:

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);