2012-11-24 20 views
8

में सूची दृश्य के अंदर बटन पर ऑनक्लिक श्रोता सेट करें मेरे पास मेरी स्क्रीन में एक सूची दृश्य है, प्रत्येक सूची आइटम में 2 टेक्स्ट व्यू और एक बटन होता है। बटन पर क्लिक करें मैं वेक्टर से कुछ डेटा प्राप्त करने के लिए सूची आइटम चयनित इंडेक्स लेना चाहता हूं।एंड्रॉइड

यह मेरी सूची कस्टम एडाप्टर है। लेकिन मुझे नहीं पता कि यह कैसे करना है।

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

    } 

} 

उत्तर

8

अपने एडाप्टर में इस प्रयास करें:

@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; 
} 

संपादित

आपका आवरण वर्ग:

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

sub=(Button) mRow.findViewById(R.id.subscribe_now_btn);

में बदलें
+0

मैं इस \t \t \t holder.getSubButton()। SetOnClickListener (नई OnClickListener जोड़ा() \t \t \t { \t \t \t @Override \t \t \t सार्वजनिक शून्य ऑनक्लिक (देखें v) \t \t \t { \t \t \t // तुम क्या चाहते \t \t \t} \t \t \t}); लेकिन यह एक शून्य सूचक exc thorws .. – Reham

+0

मैंने अपना जवाब अपडेट कर दिया है। –

+0

धन्यवाद, यह अब काम करता है। – Reham

4

आप बटन पर क्लिक सूची पर-व्यू के सूचकांक प्राप्त कर सकते हैं, यहाँ दो उदाहरण हैं: -

आप श्रोता के अपने onClick विधि में इन लिख सकते हैं।

उदाहरण 1

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

उदाहरण 2

सेट स्थिति जब दृश्य बनाने

mybutton.setTag(position); 

श्रोता

में स्थिति प्राप्त करें setTag का उपयोग कर 10
int position = (Integer) view.getTag(); 

आशा इस मदद :)

+0

धन्यवाद ... मुझे ज़रूरत थी कि GetPositionForView विधि :) अच्छा जवाब – DoruChidean