2016-10-06 5 views
1

나는 android recyclerview로 작업하고 있습니다. 각 항목에 버튼이 있습니다. 처음 버튼을 클릭 할 때 아무 것도 일어나지 않지만이 버튼을 두 번 클릭하면 작동합니다. 벨로이 내 코드입니다 :버튼 한 번의 클릭으로 작동하지 않으며, 두 번 클릭하면 작동합니다.

}

도와주세요!

+0

스위치 케이스를 사용하십시오. –

+0

스위치 케이스가 작동하지 않는 경우, 양쪽 버튼 모두에 대해 익명으로 OnClickListener를 초기화하십시오. – Kushan

답변

0

익명으로 다음과 같이 각각의 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 

    } 

}); 

, 당신은 대신 스위치 케이스를 사용하여 시도 할 수있는 문은

0

이 코드를 시도 할 경우 :

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; 
    } 
} 
0

버터 나이프를 사용하고 있기 때문에 버튼에 클릭 동작을 수행 할 때 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 대신 스위치를 사용하십시오.

관련 문제