各アイテムのボタンを含むListViewがあります。このイベントにはボタンのOnClickイベントよりも多くの情報(id、position)が含まれているため、アイテムのクリックによってリストのOnItemClickイベントが発生するようにしたいと思います。
これはリストの重要なアクションです。そのため、ボタンが必要であり、通常のアイテムクリックではボタンが起動しません(ボタンをフォーカス可能にするとうまくいくと思います)。
これは可能ですか?
各アイテムのボタンを含むListViewがあります。このイベントにはボタンのOnClickイベントよりも多くの情報(id、position)が含まれているため、アイテムのクリックによってリストのOnItemClickイベントが発生するようにしたいと思います。
これはリストの重要なアクションです。そのため、ボタンが必要であり、通常のアイテムクリックではボタンが起動しません(ボタンをフォーカス可能にするとうまくいくと思います)。
これは可能ですか?
行もクリック可能ですか?行がクリック可能かどうかに応じて、おそらく次のいずれかを実行します。
ボタンを設定するだけclickable=false
で、親にタッチを適切にゲートできます。つまり、ボタンが表示されているリストビューの行で、onItemClickListener
その行について通知を受ける必要があります。
ボタンが存在する行の位置を報告するタグ(View.setTag(..))をボタンに設定し、このタグをonClickListener
このページでfreshDroidによって提案された答えに従うこともできますがOnClickListener
、ビューが作成/リサイクルされるたびに新しいものを作成するため、これは非効率的であり、余分なGC作業が発生します。
リスト用に独自のアダプタを作成してみてください。getView()メソッドで必要な要件を実行します。
setListAdapter(new ArrayAdapter<string>(this, R.layout.list_item, strings) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row;
if (null == convertView) {
row = mInflater.inflate(R.layout.list_item, null);
} else {
row = convertView;
}
Button bt1 = (Button) row.findViewById(android.R.id.bt1);
bt1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
//you will get position and do necessary method
}
});
return row;
}
});