2012-06-06 14 views
25

से ListView तक कैसे पहुंच सकता हूं मेरे पास अपने एडाप्टर के साथ एक कस्टम ListView है। मैं अपने ListView के आइटम में Button पर क्लिक को प्रबंधित कर रहा हूं, और मैं इस क्लिक पर अदृश्य बनने के लिए ListView चाहता हूं।मैं एडाप्टर

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

public class ScheduleArrayAdapter extends ArrayAdapter<ScheduleListItem> { 

    /*...*/ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     if (v == null) { 
      LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(id, null); 
     } 
     final ScheduleListItem o = items.get(position); 
     if (o != null) { 

     /*...*/   

      Button details=(Button)v.findViewById(R.id.btn_details); 
      details.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        //HOW TO MAKE (R.id.lv_schedule) TO BECOME INVISIBLE HERE? 
       } 
      }); 
     } 
     return v; 
    } 
} 
+0

मैंने सोचा कि एडाप्टर रखने का पूरा बिंदु ListView से तर्क को रद्द करना है। – sudocoder

उत्तर

64

ViewGroup parentView की मूल getView() द्वारा दिया है, जो अपने मामले में अपने कस्टम सूचीदृश्य है के संदर्भ में आयोजित करता है।

@Override 
public View getView(int position, View convertView, final ViewGroup parent) { 
    ... 
    details.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      parent.setVisibility(View.INVISIBLE); // or View.GONE 
     } 
    }); 
    ... 
    return v; 
} 
8

इस के बजाय आप एडाप्टर के निर्माता के माध्यम से अपने सूची दृश्य के संदर्भ गुजरती हैं और स्टोर है कि स्थानीय सूची दृश्य चर में कर सकते हैं। आप पहुँच अपने listviews method.Like इस

public ViewPackagesAdapter(Activity mActivity, ListView cmgListView) { 
     this.mActivity = mActivity; 
     this.mListView=cmgListView; 
    } 

अब mListView के माध्यम से गतिविधि के सूची दृश्य का उपयोग ..

0

मेरे मामले में GridItemClickListner किसी कारण के लिए काम किया नहीं था के लिए इसका उपयोग कर सकते हैं। मैं इस

public View getView(final int position, View convertView, ViewGroup parent) { 
     convertView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ((ClockGridView) v.getParent()).performItemClick(v, position, v.getId()); 
         (OR) 
      ((ClockGridView)parent).performItemClick(v, position, v.getId()); 
    } 
}); 
} 

"ClockGridView" जो फैली "GridView" वर्ग का उपयोग कर एडाप्टर वर्ग से GridView का उपयोग।

संबंधित मुद्दे