Как я могу получить значение от всех сборщиков чисел в моем представлении переработчика? - PullRequest
1 голос
/ 28 января 2020

Привет всем, вот мой код с видом переработчика, он работает, он берет 3 варианта из моей базы данных, но моя проблема в том, когда я пытаюсь получить все 3 значения в моем представлении переработчика

Прежде всего, вот мой класс :

public class OpcionesPonderacionClass {
String Titulo;

public OpcionesPonderacionClass(String titulo) {
    Titulo = titulo;
}
 public OpcionesPonderacionClass() {

 }

public String getTitulo() {
    return Titulo;
}

public void setTitulo(String titulo) {
    Titulo = titulo;
}

}

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

public class OpcionesPonderacionAdapter extends RecyclerView.Adapter<OpcionesPonderacionAdapter.ViewHolderOpcionesPonderacion> {

Context mCtx;
ArrayList<OpcionesPonderacionClass> opcionesPonderacionList;


public OpcionesPonderacionAdapter(Context mCtx, ArrayList<OpcionesPonderacionClass> opcionesList) {
    this.mCtx = mCtx;
    this.opcionesPonderacionList = opcionesList;
}

@NonNull
@Override
public ViewHolderOpcionesPonderacion onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view  = LayoutInflater.from(parent.getContext()).inflate(R.layout.itemopcionponderacion,null);
    return new ViewHolderOpcionesPonderacion(view);
}

@Override
public void onBindViewHolder(@NonNull ViewHolderOpcionesPonderacion holder, final int position) {
    holder.tituloOpcionPonderacion.setText(opcionesPonderacionList.get(position).getTitulo());

    holder.npValueOpcionPonderacion.setMinValue(0);
    holder.npValueOpcionPonderacion.setMaxValue(10);

}

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

public class ViewHolderOpcionesPonderacion extends RecyclerView.ViewHolder {
    TextView tituloOpcionPonderacion;
    NumberPicker npValueOpcionPonderacion;

    public ViewHolderOpcionesPonderacion(@NonNull View itemView) {
        super(itemView);
        tituloOpcionPonderacion = itemView.findViewById(R.id.tv_TituloOpcionPonderacion);
        npValueOpcionPonderacion = itemView.findViewById(R.id.np_ValorNumero);

    }
}

}

Я вижу все варианты с их номерными выборами от 0 до 10, но сейчас я пытаюсь получить тост со всеми значениями, разделенными запятой ",".

Моя главная проблема заключается в том, как .getValue () из всех сгенерированных сборщиков чисел.

1 Ответ

0 голосов
/ 28 января 2020

Вы можете настроить прослушиватель для наблюдения изменений значений в NumberPicker и сбора значений в некоторой коллекции.

public static class OpcionesPonderacionAdapter
        extends RecyclerView.Adapter<OpcionesPonderacionAdapter.ViewHolderOpcionesPonderacion> {

    Context mCtx;
    ArrayList<OpcionesPonderacionClass> opcionesPonderacionList;

    private final Map<Integer, Integer> pickerValues = new HashMap<>();
    private OnNumberPickerValueChangeListener valueChangeListener
            = new OnNumberPickerValueChangeListener() {
        @Override
        public void onValueChange(int position, int value) {
            pickerValues.put(position, value);
        }
    };

    public OpcionesPonderacionAdapter(Context mCtx, ArrayList<OpcionesPonderacionClass> opcionesList) {
        this.mCtx = mCtx;
        this.opcionesPonderacionList = opcionesList;
    }

    @NonNull
    @Override
    public ViewHolderOpcionesPonderacion onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.itemopcionponderacion, null);
        return new ViewHolderOpcionesPonderacion(view, valueChangeListener);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolderOpcionesPonderacion holder, final int position) {
        holder.tituloOpcionPonderacion.setText(opcionesPonderacionList.get(position).getTitulo());

        holder.npValueOpcionPonderacion.setMinValue(0);
        holder.npValueOpcionPonderacion.setMaxValue(10);

    }

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

    public Map<Integer, Integer> getPickerValues() {
        return pickerValues;
    }

    public class ViewHolderOpcionesPonderacion extends RecyclerView.ViewHolder {

        TextView tituloOpcionPonderacion;
        NumberPicker npValueOpcionPonderacion;

        public ViewHolderOpcionesPonderacion(@NonNull View itemView,
                                             final OnNumberPickerValueChangeListener listener) {
            super(itemView);
            tituloOpcionPonderacion = itemView.findViewById(R.id.tv_TituloOpcionPonderacion);
            npValueOpcionPonderacion = itemView.findViewById(R.id.np_ValorNumero);
            npValueOpcionPonderacion.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
                @Override
                public void onValueChange(NumberPicker picker,
                                          int oldVal,
                                          int newVal) {
                    listener.onValueChange(getAdapterPosition(), newVal);
                }
            });
        }
    }

    interface OnNumberPickerValueChangeListener {
        void onValueChange(int position, int value);
    }
}

для получения значений:

@Override
public void onClick(View v) {
    final Collection<Integer> values = adapter.getPickerValues().values();
    final String result = TextUtils.join(".", values);
    Toast.makeText(this, result ,Toast.LENGTH_SHORT).show();
}
...