2016-03-28 23 views
1

CheckBox ve EditText ile ListView var. Button numaralı tıklamayla kontrol edilen CheckBoxes işaretinin EditText değerini almak istiyorum. Bunu nasıl yapabilirim?Listede yer alan öğeler nasıl tıklanır?

Benim GetView() yöntemi:

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     convertView = inflater.inflate(R.layout.scrap_list_row_item, parent, false); 
     final EditText kg = (EditText) convertView.findViewById(R.id.editText1); 
     final CheckBox cb = (CheckBox) convertView.findViewById(R.id.checkBox1); 
     final TextView txtKg = (TextView) convertView.findViewById(R.id.textView1); 
     final float scale = context.getResources().getDisplayMetrics().density; 
     cb.setPadding(cb.getPaddingLeft() + (int)(10.0f * scale + 0.5f), 
       cb.getPaddingTop(), 
       cb.getPaddingRight(), 
       cb.getPaddingBottom()); 
     //cb.setText(modelItems[position].getName()); 
     cb.setText(arrayScrapItems.get(position).getItemName()); 

     cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

       @Override 
       public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
        if(isChecked) 
        { 
         // Toast.makeText(context, "You checked " + arrayScrapItems.get(position).getItemName(), Toast.LENGTH_SHORT).show(); 
         cb.setButtonDrawable(R.drawable.checkbox_background_active); 
         kg.setBackgroundResource((R.drawable.kg_box)); 
         txtKg.setTextColor(Color.parseColor("#000000")); 
         kg.setFocusable(true); 
         kg.setEnabled(true); 
        } 
        else 
        { 
         //Toast.makeText(context, "You unchecked " + arrayScrapItems.get(position).getItemName(), Toast.LENGTH_SHORT).show(); 
         cb.setButtonDrawable(R.drawable.checkbox_background); 
         kg.setBackgroundResource((R.drawable.kg_box_inactive)); 
         txtKg.setTextColor(Color.parseColor("#D3D3D3")); 
         kg.setFocusable(false); 
         kg.setEnabled(false); 
        } 
       } 
      } 
     ); 

     return convertView; 
+0

ListView ile onay kutusu için pek çok ders var. – Piyush

cevap

0

ListView düğmeye etkinlikte yapamazsın 's görüşlerini, geri dönüştürür gibi sadece olduğundan, tüm liste öğelerinin geçmesi ve bunların kontrol edilip edilmediğini görmek ya da değil tıklayınız Listenizde satırlar kadar çok görünüm var. Örneğin. Eğer listede 1000 satır varsa ve bunlardan 20 tanesi aynı anda ekranda gösteriliyorsa, ListView'iniz sadece 20 Görünüm (20 CheckBox ve 20 EditTexts) içerir ve bu, onları doğru veriyle doldurmak için ListAdapter uygulamasına bağlıdır. Kullanıcının listeyi ne kadar kaydırdığına bağlı olarak 1000 satırdan herhangi biri. Bu nedenle, kontrol edilen satırları ve bir çeşit ekran dışı modeldeki metinleri takip etmeniz gerekecektir.

Ve bir modelde tüm bu bilgilere sahip olduğunuzda, buna kolayca erişebilirsiniz, söz konusu düğmeye tıklanır.

Dolayısıyla, her şeyden önce, kodunuzu yalnızca convertView boşsa yeni bir görünüm oluşturduğunuz şekilde değiştirmeniz gerekecektir. Eğer boş değilse, View's durumlarını verilen position'daki satırın durumuna güncellersiniz. Bu durum ekran dışı modelinizden gelmelidir.

Bu cevabın sizi doğru parçaya getirmesini umuyoruz, her durumda, ListViews geri dönüşüm görünümleri hakkında bilgi sahibi olmalısınız.

İlgili konular