¿Cómo puedo acceder a ListView desde el adaptador

Tengo un ListView personalizado con mi propio adaptador. Estoy manejando el clic en un Button en el elemento de mi ListView , y quiero que el ListView vuelva invisible en este clic.

No tengo ninguna idea cómo conseguir acceso al ListView del adaptador.

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

ViewGroup parent tiene referencia al padre de la View devuelta por getView() , que en su caso es su lista personalizada.

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

En lugar de esto, puede pasar la referencia de su Listview a través del constructor del adaptador y almacenarla en la variable Listview local. Puede utilizarlo para acceder a su método Listviews.

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

Ahora acceda a ListView de la actividad a través de mListView.

En mi caso GridItemClickListner no funcionó por alguna razón. Tengo acceso al Gridview desde la clase Adapter usando este

 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" que extiende la clase "GridView".

  • Cómo configurar el icono de Disposición de cajones en el lado derecho de la pantalla del dispositivo?
  • Cambio de fondo del elemento de vista de lista de Android
  • Cómo hacer parte del texto Negrita en android en tiempo de ejecución?
  • Widget ListView con múltiples intentos pendientes
  • Cómo cambiar el color de Android ListView separador de línea?
  • RequestLayout () incorrectamente llamado por android.widget.RelativeLayout android
  • Cómo extraer objetos de ListView - getItemAtPosition no funcionará
  • ¿Qué es mejor, listview o linearlayout en scrollview cuando los elementos son muy limitados?
  • ¿Cuál es el color predeterminado de una línea divisora ​​ListView?
  • Obtener la posición del elemento listview en el botón de clic
  • Precargar algunas imágenes para listview con UniversalImageLoader
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.