Umarım burada yardımcı olabilirim. ListView öğeleri için özel bir düzeniniz olduğunu varsayıyorum ve bu düzen, düğme ve diğer bazı görünümlerden - TextView, ImageView veya her neyse. Şimdi, düğme tıklandığında farklı olayın ve tıklanan her şeyde farklı olayın tetiklenmesini istiyorsunuz.
Bunu, ListActivity'nizin onListItemClick () işlevini kullanmadan elde edebilirsiniz.
İşte yapmanız gerekenler:
Özel düzen kullanıyorsunuz, bu nedenle muhtemelen özel adaptörünüzden getView () yöntemini geçersiz kılıyorsunuz. İşin püf noktası, düğmeniz için farklı dinleyiciler ayarlamak ve tüm görünüm (sıranız) için farklı olmaktır. Örneğe bir göz atın:
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");
}
}
OnItemClickListener sınıfınız şu şekilde bildirilebilir:
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);
}
}
Elbette, muhtemelen OnItemClickListener yapıcısına daha fazla parametre ekleyeceksiniz.
Ve önemli bir şey - yukarıda gösterilen getView uygulaması oldukça çirkin, normalde findViewById çağrılarından kaçınmak için ViewHolder kalıbını kullanmalısınız .. ama muhtemelen bunu zaten biliyorsunuzdur.
Custom_row.xml dosyam RelativeLayout, Button of id "button", TextView id "text" ve ImageView id "image" - sadece işleri netleştirmek için.
Saygılarımızla!