私はアンドロイドリサイクルビューで働いています。私は各項目にボタンを持っています。初めてボタンをクリックすると何も起きませんが、このボタンをダブルクリックすると動作します。 ベローが、これは私のコードです:シングルクリックが機能しない、ダブルクリックが機能する
}
助けてください!
私はアンドロイドリサイクルビューで働いています。私は各項目にボタンを持っています。初めてボタンをクリックすると何も起きませんが、このボタンをダブルクリックすると動作します。 ベローが、これは私のコードです:シングルクリックが機能しない、ダブルクリックが機能する
}
助けてください!
は匿名で、次のようにそれぞれがonclicklistener初期化試してみる:あなたはこれを避けたい場合は
buttonShare.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//do something
}
});
buttonSave.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//do something else
}
});
は、あなたの代わりに、スイッチケースを使用して試すことができ文は
このコードしようとした場合:
をpublic class NewsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
@BindView(R.id.image_news)
public ImageView imageNews;
@BindView(R.id.text_title_news)
public TextView textTitleNews;
@BindView(R.id.text_description_news)
public TextView textDescriptionNews;
@BindView(R.id.text_time)
public TextView textTime;
@BindView(R.id.button_share)
public Button buttonShare;
@BindView(R.id.button_save)
public Button buttonSave;
public NewsViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this, itemView);
buttonShare.setOnClickListener(this);
buttonSave.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_share:
Log.e("clicked", "share");
break;
case R.id.button_save:
Log.e("clicked", "saved");
break;
}
}
ButterKnifeを使用しているので、ボタンでクリックアクションを実行するためにButterKnifeアノテーションを使用することをお勧めします。
@OnClick({R.id.button_share, R.id.button_save})
public void onClick(View view) {
switch (view.getId()) {
case R.id.button_share:
// Do something
break;
case R.id.button_save:
// Do something
break;
}
}
また、読みやすくするために、ifではなくswitchを使用してください。
これ用のスイッチケースを使用してください。 –
スイッチケースが機能しない場合は、両方のボタンのために匿名でOnClickListenerを初期化してください...間違いなく機能します – Kushan