2017-12-11 18 views
0

私のの位置を私のrecyclerviewに入れる必要があります。基本的に、ユーザーがボタンをクリックすると、編集テキストフィールドが空白の場合、ユーザーは続行できません。私はまた、各編集テキストをクラスのセッターで設定しています。これは、すべての編集テキストの下線を削除して基本的に編集不可能にするためのものです。すべての視聴者を取得するrecyclerview

これは、ユーザーがそのボタンをクリックしたときにこれは私のonbindviewholder

@Override 
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position){ 


    /* 
    Holder for exercise row 
    Sets the text for exercise, weight, sets, and reps 
    Disables text if save button is clicked 
    */ 
    if(holder instanceof ExerciseRowHolder) { 

     int pos = holder.getAdapterPosition(); 
     Log.d("pos", String.format("%s", pos)); 
     ((ExerciseModel) rowTypeList.get(pos)).setExerciseEditText(((ExerciseRowHolder) holder).exercise); 
     ((ExerciseModel) rowTypeList.get(pos)).setWeightEditText(((ExerciseRowHolder) holder).weight); 
     ((ExerciseModel) rowTypeList.get(pos)).setSetsEditText(((ExerciseRowHolder) holder).set); 
     ((ExerciseModel) rowTypeList.get(pos)).setRepsEditText(((ExerciseRowHolder) holder).rep); 
     ((ExerciseModel) rowTypeList.get(pos)).setDragHandle(((ExerciseRowHolder) holder).dragHandle); 
     ((ExerciseModel) rowTypeList.get(pos)).setExerciseRowTextWatcher(((ExerciseRowHolder) holder).exerciseRowTextWatcher); 
     ((ExerciseRowHolder) holder).updatePosition(pos); 

です。この問題は、viewholdersの編集テキストがonbindviewholderに設定されているため、編集テキストがviewholdersのヌルを返すことになります。これは、画面上の編集テキストのみが設定されていることを意味します。私はすべての編集テキストを設定する必要があります。 recyclerviewviewholdersを取得するためのアドバイスはありますか?

 int childCount = displayWorkoutAdapter.getItemCount() - 1; 
    //checks for all the children of recyclerView excluding the buttons 
    for (int a = childCount; a > 0; a--) { 
     RowType rowType = displayWorkoutAdapter.rowTypeList.get(a); 

     //if the first row = exercise row, check to see if there is any input in the exercise, sets, and reps field 
     //if not, display error 
     if (rowType.getClass() == ExerciseModel.class) { 
      AutoCompleteTextView exercise = ((ExerciseModel) rowType).getExerciseEditText(); 
      EditText weight = ((ExerciseModel) rowType).getWeightEditText(); 
      EditText sets = ((ExerciseModel) rowType).getSetsEditText(); 
      EditText reps = ((ExerciseModel) rowType).getRepsEditText(); 

      /* 
      if(exercise == null){ 
       exercise = exerciseRow.findViewById(R.id.autoCompleteTextView); 
       weight = exerciseRow.findViewById(R.id.weight); 
       sets = exerciseRow.findViewById(R.id.sets); 
       reps = exerciseRow.findViewById(R.id.reps); 
      }*/ 


      textListenerToRemoveError(exercise, weight, sets, reps); 

答えて

0

RecyclerViewのポイントは、パフォーマンスが低下して、画面上で見ることができる負荷のみのアイテムとして、それは同時に、すべてのアイテムを保持していないということです。現代的なアプローチですが、一度にすべてのアイテムをロードする場合は、クラス(docs)です。垂直方向にスクロール可能なビューのコレクションが表示されます。各ビューはリストの前のビューのすぐ下に配置されます。

あなたのアイテムは一度に読み込まれますが、最新のものとはみなされません。

+0

私はすでにRecyclerViewを実装しているので、RecyclerViewを使用することをお勧めします。私が持っている唯一の問題は、すべての編集テキストを編集不可能にすることです。私はonbindviewholderにフラグを設定できることを知っています。ボタンをクリックするたびに、編集テキストを無効にします。しかし、私はすべての編集テキストが満たされていることを確認する方法が不明です –

関連する問題