2012-11-24 31 views
8
android

liste görünümü içinde butona Seti OnClick Dinleyici, her liste öğesi 2 metin görünümleri ve bir düğmesi bulunur. düğmesi i bir vektör bazı verileri almak için liste et seçilen dizini almak istiyor tıklayın. benim ekranında bir liste görünümü var

Bu

i bunu nasıl bilmiyorum benim Liste Custom Adapter.But olduğunu.

private class CustomAdapter extends ArrayAdapter<ServicesItems> { 

    public CustomAdapter(Context context, int resource, 
      int textViewResourceId, List<ServicesItems> objects) { 
     super(context, resource, textViewResourceId, objects); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder = null; 
     TextView item = null; 
     TextView description = null; 
     Button subNowBtn; 

     ServicesItems ii = getItem(position); 

     if (null == convertView) { 
      convertView = mInflater.inflate(
        R.layout.list_of_servics_item_2, null); 

      holder = new ViewHolder(convertView); 
      convertView.setTag(holder); 
     } 
     holder = (ViewHolder) convertView.getTag(); 
     // cat_name = holder.gettitle(); 

     Resources resources = getResources(); 

     ServicesItems bean1 = (ServicesItems) servicesVector 
       .elementAt(position); 

     String cat_name_str = bean1.getService_name().toString(); 
     String descreption = bean1.getDescription().toString(); 


     item = holder.getItem(); 
     item.setText(bean1.getDescription()); 

     description = holder.getDescription(); 
     description.setText(bean1.getService_name()); 

     subNowBtn=holder.getSubButton(); 

     return convertView; 
    } 

    private class ViewHolder { 
     private View mRow; 
     private TextView description = null; 
     private TextView item = null; 
     private Button sub = null; 

     public ViewHolder(View row) { 
      mRow = row; 
     } 

     public TextView getDescription() { 
      if (null == description) { 
       description = (TextView) mRow 
         .findViewById(R.id.category_tv); 
      } 
      return description; 
     } 

     public TextView getItem() { 
      if (null == item) { 
       item = (TextView)  
      mRow.findViewById(R.id.descreption_tv); 
      } 
      return item; 
     } 

     public Button getSubButton(){ 
      if(null==sub){ 
       sub=(Button)findViewById(R.id.subscribe_now_btn); 


      } 
      return sub; 
     } 

    } 

} 

cevap

8

sizin Adaptörü bu deneyin:

@Override 
public View getView(final int position, View convertView, ViewGroup parent) 
{ 
    View row = convertView; 
    YourWrapper wrapper = null; 

    if (row == null) 
    { 
     row = inflater.inflate(R.layout.layout, parent, false); 
     wrapper = new YourWrapper (row); 
     row.setTag(wrapper); 
    } 
    else 
     wrapper = (YourWrapper) row.getTag(); 

    wrapper.getButton().setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      // What you want 
     } 
    }); 

    return row; 
} 

DÜZENLEME

Sizin sarıcı sınıfı: sub=(Button) mRow.findViewById(R.id.subscribe_now_btn);

içine

public class YourWrapper 
{ 
    private View base; 
    private Button button; 

    public YourWrapper(View base) 
    { 
     this.base = base; 
    } 

    public Button getButton() 
    { 
     if (button == null) 
     { 
      button = (Button) base.findViewById(R.id.your_button); 
     } 
     return (button`); 
    } 
} 

Değişim

+0

ben bu \t \t \t holder.getSubButton(). SetOnClickListener (yeni OnClickListener eklendi() \t \t \t { \t \t \t @Override \t \t \t public void onClick (Görünüm v) \t \t \t { \t \t \t // Ne istiyorsun \t \t \t} \t \t \t}); ama bir boş gösterici tarifeler .. – Reham

+0

cevabımı güncelledik thorws. –

+0

Teşekkür ederim, şimdi çalışıyor. – Reham

4

Sen düğmesi tıklandığında liste görünümünün endeksi alabilirsiniz burada iki örnek: -

Sen dinleyici sizin onClick yönteminde bu yazabilirsiniz.

Örnek 1

View parentRow = (View) v.getParent(); 
ListView listView = (ListView) parentRow.getParent(); 
final int position = listView.getPositionForView(parentRow); 

Örnek 2

ayarlayın pozisyonu

mybutton.setTag(position); 

dinleyici

pozisyon almak görünüm oluştururken setTag kullanılarak 10
int position = (Integer) view.getTag(); 

Umut bu yardım :)

+0

teşekkür ı getPositionForView yöntemini edildi gerekli you..all :) iyi bir cevap – DoruChidean

İlgili konular