J'ai une ListView
personnalisée avec mon propre adaptateur. Je gère le clic sur une Button
dans mon article ListView
et je veux que la ListView
devienne invisible sur ce clic.
Je ne sais pas comment accéder à ListView
depuis l'adaptateur.
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
contient la référence au parent de la View
renvoyée par getView()
, qui dans votre cas est votre liste personnalisée.
@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;
}
Au lieu de cela, vous pouvez transmettre la référence de votre Listview au constructeur de l'adaptateur et la stocker dans la variable locale Listview. Vous pouvez utiliser ceci pour accéder à votre méthode Listviews.
public ViewPackagesAdapter(Activity mActivity, ListView cmgListView) {
this.mActivity = mActivity;
this.mListView=cmgListView;
}
Accédez maintenant à Listview d'Activité via mListView ..
Dans mon cas, GridItemClickListner n'a pas fonctionné pour une raison quelconque. J'accède au Gridview de la classe Adapter en utilisant cette
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" qui étend la classe "GridView".