Android 按钮单点不工作,双击工作
我在和android recyclerview合作。我在每个项目上都有一个按钮。当我第一次点击这个按钮时,什么也没发生,但我双击这个按钮,它就工作了。 贝娄,这是我的密码:Android 按钮单点不工作,双击工作,android,button,android-recyclerview,Android,Button,Android Recyclerview,我在和android recyclerview合作。我在每个项目上都有一个按钮。当我第一次点击这个按钮时,什么也没发生,但我双击这个按钮,它就工作了。 贝娄,这是我的密码: public class NewsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { @BindView(R.id.image_news) public ImageView imageNews; @BindView(R.
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) {
if (v.getId() == buttonSave.getId()) {
Log.e("clicked", "save");
} else if (v.getId() == buttonShare.getId()) {
Log.e("clicked", "share");
}
}
}
请帮忙 尝试以匿名方式初始化每个OnClick Listener,如下所示:
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
}
});
如果要避免这种情况,可以尝试使用switch case而不是If语句尝试以匿名方式初始化每个onclick侦听器,如下所示:
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
}
});
如果要避免这种情况,可以尝试使用switch case代替If语句尝试以下代码:
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;
}
}
请尝试以下代码:
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;
}
}
为了更好的可读性,请使用switch而不是if。因为您使用的是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;
}
}
为了更好的可读性,请使用switch而不是if。使用switch case。如果switch case不起作用,请匿名初始化两个按钮的OnClickListener。。。这肯定会解决此问题。如果开关情况不起作用,请为两个按钮匿名初始化OnClickListener。。。那肯定会成功的