ImageViewとTextViewを持つカスタムListViewがあります。そして私はListView.setOnItemSelectedListener();を実装しました。
しかし、これらはImageViewとTextViewの両方を(個別に)クリック可能にする方法ですか?つまり、ImageViewをクリックするとActivityAを呼び出し、TextViewをクリックするとActivityBを呼び出す必要がありますか?
はい、Adapterクラス自体の中でそれを行うことができます。AdapterクラスでImageViewとTextviewのクリックリスナーを設定するだけです。
はい、もちろん!
カスタムListAdapterでは、次のようにonClickListenerを設定できます。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if( row == null ){
LayoutInflater vi = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = vi.inflate(this.textViewResourceId, null);
}
row.findViewById(R.id.image_item).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
row.findViewById(R.id.text_item).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
}
はい、もちろんあなたはそれを達成することができます。onItemClickListenerを使用して、リストアイテム全体をクリックしたときに別のアクションを実行する場合は、アダプタクラス内でonClickListenerを個別に設定し、これらのボタンまたはテキストビューをフォーカス不可として設定できます。
yourButton.setFocusable(false);
yourButton.setFocusableInTouchMode(false);
同じ例がたくさんあります
このように
ポイントは維持する必要があります
getViewの各ビューにリスナーを設定する必要があります(getビューで毎回作成しないでください。作成済みのビューを渡すか、これを渡して同じアダプタークラスにリスナーを実装できます)。
ビュー(TextViewなど)をクリック可能にするtrue
また、行の位置も必要になるため、このリンクのように、get&Setタグやビューparantなどのさまざまなロジックを使用できます。