2012-06-06 15 views
25

zu Ich habe eine benutzerdefinierte ListView mit meinem eigenen Adapter. Ich verarbeite den Klick auf eine Button in meinem ListView 's Artikel, und ich möchte die ListView auf diesem Klick unsichtbar werden.Wie greife ich auf ListView vom Adapter

Ich habe keine Ahnung, wie man Zugriff auf die ListView vom Adapter bekommt.

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

ich dachte, der ganze Punkt eines Adapters ist, Logik von ListView zu entkoppeln. – sudocoder

Antwort

64

ViewGroup parent hält Bezug auf die Eltern der View zurück von getView(), die in Ihrem Fall ist Ihre benutzerdefinierte Listenansicht.

8

Statt dessen können Sie die Referenz Ihres Listview über den Konstruktor des Adapters übergeben und in der lokalen Variablen Listview speichern. Sie können dies für den Zugang benutzen, um Ihre Listviews method.Like diese

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

Jetzt Aktivität der Listenansicht durch mListView zugreifen ..

0

In meinem Fall GridItemClickListner nicht aus irgendeinem Grund funktionierte. Ich greife auf die Gridview von Adapterklasse mit diesem

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“, der „Gridview“ Klasse erweitert.

Verwandte Themen