- evet, haklısınız, olay işleyicileri Adapter
yılında, ListView
değil içeren, Activity
/Fragment
olmalıdır.
Belki böyle olursa benim yaklaşım ideal değildir, ama işte burada:
Ben Adaptörü bir arayüz yapmak (ya da dışında olursa olsun), örneğin
public interface MyAdapterCallback {
void buttonClicked(int buttonId, int position, int param2);
}
Tabii, geçebilir istediğin kadar params.
Adapter
yapıcıda Bu arabirimi uygulayarak nesnenin örneğini geçiriyorum (Activity
'un kendisi).
O zaman benim Activity
bu arabirimi uygular ve istenen eylemleri gerçekleştirdiğim buttonClicked()
'u geçersiz kılar.
Ve MyAdapter içinde OnClickListeners
düğmelerini, numaralı düğmeleri onClick()
numaralı telefona koydum _callback.buttonClicked(passing your params)
'u arayın.
Umut bu yanıtın yararlı :)
Güncelleme oldu.
Tamam, arayüz kullanmadan bir cevap vereceğim.
senin Activity
böyle OnClickListener
uygulamak edelim: Sonra
public class MainActivity implements View.OnClickListener{
@Override
public void onClick(View v) {
//do your actions here
}
}
, burada Adapter
kısmen hayata geçirilmesidir: Düğmeye bastığınızda Bu durumda
public class MyAdapter extends ArrayAdapter<String> {
private MainActivity _mainActivity;
public MyAdapter(Context context, int resource, MainActivity mainActivity) {
super(context, resource);
_mainActivity = mainActivity;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Button button;
button.setOnClickListener(_mainActivity);
return super.getView(position, convertView, parent);
}
}
, - onClick MainActivity içinde olacak olarak adlandırılabilir.
Bir seçenek daha.
public class MainActivity {
public void onButtonInAdapterClick(your params) {
//do your actions here
}
}
Ve Adapter
:
senin böyle Activity
olun
public class MyAdapter extends ArrayAdapter<String> {
private MainActivity _mainActivity;
public MyAdapter(Context context, int resource, MainActivity mainActivity) {
super(context, resource);
_mainActivity = mainActivity;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Button button;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
_mainActivity.onButtonInAdapterClick(your params);
}
});
return super.getView(position, convertView, parent);
}
}
ihtiyacınız seçeneği)
Dude seç, cevabım size yardım yaptı? –