0

У меня есть две кнопки в моем макете RecyclerView с идентификаторами button1 и button2.Получить еще один вид в методе onClick()

Вот мой RecyclerView адаптер:

public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> { 

    private Context context; 

    private List<Data> dataList; 

    public DataAdapter(Context context, List<Data> dataList) { 
     this.context = context; 
     this.dataList = dataList; 
    } 

    public static class ViewHolder extends RecyclerView.ViewHolder { 
     public Data data; 

     public Button button1, button2; 

     public ViewHolder(View v) { 
      super(v); 

      button1 = (Button) v.findViewById(R.id.button1); 
      button2 = (Button) v.findViewById(R.id.button2); 
     } 

     public void setData(Data data) { 
      this.data = data; 
     } 

     @Override 
     public void onClick(View v) { 
      int id = v.getId(); 

      if (id == R.id.button1) { 
       clickButton(v); 
      } 
     } 
    } 

    @Override 
    public DataAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.my_layout, parent, false); 

     return new ViewHolder(v); 
    } 

    @Override 
    public void onBindViewHolder(final ViewHolder holder, int position) { 
     final Data data = dataList.get(position); 

     holder.setData(data); 

     // 
    } 

    @Override 
    public int getItemCount() { 
     return dataList.size(); 
    } 

    public void clickButton(View v) { 
     Button button1 = (Button) v; 

     // HOW DO I GET BUTTON2? 
    } 
} 

Как я могу получить button2 в моем clickButton() методе, так как v только возвращает вид для button1?

ответ

0

Вы можете передать обе кнопки от щелчка слушателя сам как -

clickButton(button1, button2); 

Причина button1 и button2 являются переменными члена ViewHolder класса, в котором вы реализованного onClickListener.

0

Вы можете сделать что-то вроде этого:

@Override 
    public void onClick(View v) { 
     v.setTag(v.getId()) 
     switch(v.getId()){ 
      case R.id.button1: 
       clickButton(v); 
       break; 
      case R.id.button2: 
       clickButton(v); 
       break; 
     } 
    } 

А потом в методе ClickButton, просто получить метку и проверить идентификатор, чтобы получить требуемую кнопку и использовать по мере необходимости.

Смежные вопросы