Ich habe ein ListView
mit folgenden Adapter
:Kann ich Listener im empfangenden Element eines listView hinzufügen?
public class gestionAdapter extends ArrayAdapter<Sav> {
public gestionAdapter(Context context, List<Sav> savs){
super(context, 0, savs);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.adapter_gestion,parent, false);
}
Sav sav = getItem(position);
ViewHolderGestion viewHolder = (ViewHolderGestion) convertView.getTag();
if(viewHolder == null){
viewHolder = new ViewHolderGestion();
viewHolder.titreSav = (TextView) convertView.findViewById(R.id.TitreSav);
viewHolder.intervenant = (TextView) convertView.findViewById(R.id.interv);
viewHolder.client = (TextView) convertView.findViewById(R.id.cli);
viewHolder.archive = (Button) convertView.findViewById(R.id.archive);
viewHolder.actif = (Button) convertView.findViewById(R.id.actif);
convertView.setTag(viewHolder);
viewHolder.archive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "archive ", Toast.LENGTH_LONG).show();
}
});
viewHolder.actif.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "actif ", Toast.LENGTH_LONG).show();
}
});
}
viewHolder.titreSav.setText(sav.getTitre());
viewHolder.intervenant.setText(sav.getIntervenant());
viewHolder.client.setText(sav.getNomClient());
return convertView;
}
}
Wie Sie sehen, gibt es zwei buttons
für jede Zeile. Im Moment habe ich die Listener in die Adapter
platziert Aber ist es möglich, diese Listener in der Empfangsansicht zu setzen, damit ich diese Schaltflächen verwenden kann, um meine Ansicht zum Beispiel zu aktualisieren?
Im Moment habe ich versucht, einige der Funktionen meines Views öffentlich zu machen, aber ich bin überhaupt nicht mit dieser Lösung zufrieden.
Ich verstehe Sie nicht vollständig, aber Sie können Listener für Ihre Root-Layout zu. Auch Ihre ViewHolder-Musterlogik in Ihrem Adapter ist nicht korrekt. – Amir
es scheint, dass ich nicht diese Elemente aus der Aktivität zugreifen können, die Listenansicht zeigt – RiddlerNewComer
Sie entweder listner auf Root-Layout setzen können, setzen listner auf Listview someListView.setOnItemClickListener (neu OnItemClickListener() { @Override public void onItemClick (AdapterView > arg0, Ansicht arg1, int arg2, lang arg3) { // TODO Automatisch generierter Methoden-Stub Log.d ("#############", "Items" + MoreItems [ arg2]); } }); – Rafal