Android 按钮单点不工作,双击工作

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.

我在和android recyclerview合作。我在每个项目上都有一个按钮。当我第一次点击这个按钮时,什么也没发生,但我双击这个按钮,它就工作了。 贝娄,这是我的密码:

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。。。那肯定会成功的