2016-10-11 2 views
0

У меня есть вид ресайклера с динамическим появлением нескольких элементов выбора номера. Я хочу, чтобы значение каждого элемента выбора номера на OnValueChange.Как получить значение из просмотра Recycler с помощью NumberPicker

Как достичь этого?

Мой адаптер Класс

public class MedicationCounterAdapter extends RecyclerView.Adapter<MedicationCounterAdapter.MyViewHolder> { 

private List<MedicationCounter> medicationCounterList; 
public Context context; 

public class MyViewHolder extends RecyclerView.ViewHolder { 
    public TextView medicationTitle; 
    public TextView medicationType; 
    public NumberPicker numberPickerNP; 

    public MyViewHolder(View view) { 
     super(view); 
     medicationTitle = (TextView) view.findViewById(R.id.med_day_type_tv); 
     medicationType = (TextView) view.findViewById(R.id.med_type_tv); 
     numberPickerNP = (NumberPicker) view.findViewById(R.id.number_picker_medication); 
    } 
} 


public MedicationCounterAdapter(List<MedicationCounter> medicationCounterList, Context iContext) { 
    this.medicationCounterList = medicationCounterList; 
    this.context = iContext; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.include_medication_counter_components, parent, false); 

    return new MyViewHolder(itemView); 
} 

@Override 
public void onBindViewHolder(final MyViewHolder holder, int position) { 
    final MedicationCounter medicationCounter = medicationCounterList.get(position); 
    holder.medicationTitle.setText(medicationCounter.getMedicationName()); 
    holder.medicationType.setText(medicationCounter.getMedicationDayType()); 
    //Set the minimum value of NumberPicker 
    holder.numberPickerNP.setMinValue(1); 
    //Specify the maximum value/number of NumberPicker 
    holder.numberPickerNP.setMaxValue(10); 
    //Gets whether the selector wheel wraps when reaching the min/max value. 
    holder.numberPickerNP.setWrapSelectorWheel(true); 
    //Set a value change listener for NumberPicker 
    holder.numberPickerNP.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
     @Override 
     public void onValueChange(NumberPicker numberPicker, int i, int i1) { 
      Log.e("numberp", "old value" + i + "' " + "new val" + i1 + ", " + numberPicker); 
     } 
    }); 

} 

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

} 

и вид утилизатор в моем осколка

RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.medication_details_recycler_view); 
mAdapter = new MedicationCounterAdapter(medicationCounterList, getContext()); 
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getContext()); 
recyclerView.setLayoutManager(mLayoutManager); 
recyclerView.setItemAnimator(new DefaultItemAnimator()); 
recyclerView.setAdapter(mAdapter); 

ответ

0

в классе MedicationCounter определить Int memeber и в методе onValueChange присвоить значение i1 к нему на определенном месте.

+0

Не могли бы вы добавить более подробную информацию к вашему ответу (например, небольшой пример поможет всем)? – Adonis

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