나는 android recyclerview로 작업하고 있습니다. 각 항목에 버튼이 있습니다. 처음 버튼을 클릭 할 때 아무 것도 일어나지 않지만이 버튼을 두 번 클릭하면 작동합니다. 벨로이 내 코드입니다 :버튼 한 번의 클릭으로 작동하지 않으며, 두 번 클릭하면 작동합니다.
}
도와주세요!
나는 android recyclerview로 작업하고 있습니다. 각 항목에 버튼이 있습니다. 처음 버튼을 클릭 할 때 아무 것도 일어나지 않지만이 버튼을 두 번 클릭하면 작동합니다. 벨로이 내 코드입니다 :버튼 한 번의 클릭으로 작동하지 않으며, 두 번 클릭하면 작동합니다.
}
도와주세요!
익명으로 다음과 같이 각각의 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 주석을 사용하는 것이 좋습니다.
@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 대신 스위치를 사용하십시오.
스위치 케이스를 사용하십시오. –
스위치 케이스가 작동하지 않는 경우, 양쪽 버튼 모두에 대해 익명으로 OnClickListener를 초기화하십시오. – Kushan