Несколько событий триггера (onClick) в представлении переработчика - PullRequest
0 голосов
/ 13 марта 2019

У меня есть recyclerView с множественным представлением, я уже правильно сопоставляю все различные виджеты, и некоторые виджеты представляют с одной и той же ViewGroup. Внутри viewgroup у меня есть кнопка, когда эта кнопка нажимается, она меняет значение в textView до сих пор все работают хорошо, проблема в том, что когда я запускаю событие, некоторые из всех групп просмотра в списке одной и той же группы изменений меняются, когда я нажимаю одну кнопку не в определенном порядке, а именно внутри списка, но в этом случае она постоянна, я уже установил некоторую точку останова, но что-нибудь нехорошее, что-нибудь в этом роде, почему происходит нечто подобное?

мой ViewHolder Hirechary выглядит так.

public abstract class AbstractViewHolderR extends RecyclerView.ViewHolder{

   public Button btn;
   public TextView view; 

   ...
}

public class ChildVH1 extends AbstractViewHolderR{
  ...
}

...other ViewHolder look the same.

/// the event listener look like this.
public class Click implement View.OnClickListener{
   AbstractViewHolderR object;
   public Click(AbstractViewHolderR o){
       object = o;
   }
   @Override
   public void onClick(View v){
     ////error checking omited
     Integer ii = Integer.Parse(object.view.getText().toString);
     ii++;
     object.view.setText(ii.ToString());
   }

}

1 Ответ

1 голос
/ 13 марта 2019

Вместо этого переместите TextView и Btn в держатель держателя, и вы должны добавить прослушиватель кликов к самому ViewHolder следующим образом

public abstract class AbstractViewHolderR extends RecyclerView.ViewHolder{

         //UPDATE
   @Override
   public long getItemId(int position) {
       return position;
   }
   ...
}

public class ChildVH1 extends RecyclerView.ViewHolder{
   public Button btn;
   public TextView view; 

   public ChildVH1(View itemView){
      btn.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      //do your stuff
                      //you can use getAdapterPosition() to get current 
                       //position in adapter
                  }
              });
     }
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...