さまざまなビューのクリックを処理するために、getView() でビューのリスナーを設定します。たくさんのアイテムを追加すると、少し遅くなります。
public View getView(int position, View convertView, ViewGroup parent) {
holder.icon_iv = (ImageView) convertView.findViewById(R.id.app_icon_iv);
holder.icon_iv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
...
}
});
holder.checkbox_iv = (CheckBox) convertView.findViewById(R.id.history_checkbox_iv);
holder.checkbox_iv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
...
}
});
}
だから私はonItemClick()でそれをしたいのですが、View arg1はビューのクリックの違いを見分けることができません。誰がそれをどうするか教えてもらえますか?
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
}
編集:ありがとう、私はこのようにすることに決めました、そしてそれは完全に機能します:
holder.item_ll.setTag(position);
holder.item_ll.setOnClickListener(mItemClickListener);
holder.checkbox_iv.setTag(position);
holder.checkbox_iv.setOnClickListener(mItemClickListener);
public View.OnClickListener mItemClickListener = new View.OnClickListener() {
public void onClick(View view) {
if (view.getTag() instanceof Integer) {
int position = (Integer) view.getTag();
HistoryItem item = adapter.get(position);
if (view.getId() == R.id.checkbox_iv) {
...
} else if (view.getId() == R.id.item_ll) {
...
}
}
}
};