2012-06-06 20 views
25

Kendi adaptörüme sahip bir özel ListView var. üzerindeki tıklamayı, ListView öğemde tutuyorum ve bu tıklamada ListView görünmez olmasını istiyorum.Adaptörden ListView'e nasıl erişirim?

Adaptörden ListView ürününe nasıl erişeceğimi bilmiyorum.

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

Bir bağdaştırıcıya sahip olmanın tüm noktasının mantığı ListView'den ayırmak olduğunu düşündüm. – sudocoder

cevap

64

ViewGroup parent senin durumunda özel listview olan getView() tarafından döndürülen View ebeveyni, başvurusunu tutar.

@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

Bunun yerine size adaptörün yapıcı aracılığıyla Listview referansını geçmek ve yerel ListeGörünüm değişkeninde o saklayabilir. Eğer listviews method.Like bu

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

Şimdi mListView aracılığıyla etkinlik'ın ListView erişmek

..

0

Benim durumumda GridItemClickListner nedense çalıştı vermedi erişim için kullanabilirsiniz. Ben "GridView" Class uzanan bu

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" seçeneğini kullanarak Adaptör sınıfından den Yanıt Yaz Yeni Konu erişin.

İlgili konular