Saya harap saya dapat membantu di sini. Saya berasumsi bahwa Anda memiliki tata letak khusus untuk item listView, dan tata letak ini terdiri dari tombol dan beberapa tampilan lain - seperti TextView, ImageView atau apa pun. Sekarang Anda ingin mengaktifkan peristiwa berbeda pada klik tombol dan peristiwa berbeda diaktifkan pada semua yang diklik.
Anda bisa mencapainya tanpa menggunakan onListItemClick () dari ListActivity Anda.
Inilah yang harus Anda lakukan:
Anda menggunakan tata letak khusus, jadi mungkin Anda mengganti metode getView () dari adaptor khusus Anda. Triknya adalah mengatur pendengar yang berbeda untuk tombol Anda dan berbeda untuk keseluruhan tampilan (baris Anda). Lihat contohnya:
private class MyAdapter extends ArrayAdapter<String> implements OnClickListener {
public MyAdapter(Context context, int resource, int textViewResourceId,
List<String> objects) {
super(context, resource, textViewResourceId, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
String text = getItem(position);
if (null == convertView) {
convertView = mInflater.inflate(R.layout.custom_row, null);
}
Button btn = (Button) convertView.findViewById(R.id.button);
btn.setOnClickListener(this);
TextView tv = (TextView) convertView.findViewById(R.id.text);
tv.setText(text);
convertView.setOnClickListener(new OnItemClickListener(position));
return convertView;
}
@Override
public void onClick(View v) {
Log.v(TAG, "Row button clicked");
}
}
Kelas OnItemClickListener Anda dapat dideklarasikan seperti di sini:
private class OnItemClickListener implements OnClickListener{
private int mPosition;
OnItemClickListener(int position){
mPosition = position;
}
@Override
public void onClick(View arg0) {
Log.v(TAG, "onItemClick at position" + mPosition);
}
}
Tentu saja Anda mungkin akan menambahkan beberapa parameter lagi ke konstruktor OnItemClickListener.
Dan satu hal penting - implementasi getView yang ditunjukkan di atas cukup jelek, biasanya Anda harus menggunakan pola ViewHolder untuk menghindari panggilan findViewById .. tetapi Anda mungkin sudah mengetahuinya.
File custom_row.xml saya adalah RelativeLayout dengan Tombol id "button", TextView of id "text" dan ImageView of id "image" - hanya untuk memperjelas.
Salam!