2

各アイテムのボタンを含むListViewがあります。このイベントにはボタンのOnClickイベントよりも多くの情報(id、position)が含まれているため、アイテムのクリックによってリストのOnItemClickイベントが発生するようにしたいと思います。

これはリストの重要なアクションです。そのため、ボタンが必要であり、通常のアイテムクリックではボタンが起動しません(ボタンをフォーカス可能にするとうまくいくと思います)。

これは可能ですか?

4

2 に答える 2

2

行もクリック可能ですか?行がクリック可能かどうかに応じて、おそらく次のいずれかを実行します。

  1. ボタンを設定するだけclickable=falseで、親にタッチを適切にゲートできます。つまり、ボタンが表示されているリストビューの行で、onItemClickListenerその行について通知を受ける必要があります。

  2. ボタンが存在する行の位置を報告するタグ(View.setTag(..))をボタンに設定し、このタグをonClickListener

  3. このページでfreshDroidによって提案された答えに従うこともできますがOnClickListener、ビューが作成/リサイクルされるたびに新しいものを作成するため、これは非効率的であり、余分なGC作業が発生します。

于 2011-11-26T10:13:39.047 に答える
-1

リスト用に独自のアダプタを作成してみてください。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;
}
});
于 2011-11-26T09:50:13.460 に答える