package org.openlmis.core.view.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import org.openlmis.core.R;
import org.openlmis.core.view.fragment.RapidTestReportFormFragment;
import org.openlmis.core.view.holder.RapidTestReportGridViewHolder;
import org.openlmis.core.view.holder.RapidTestReportRowViewHolder;
import org.openlmis.core.view.viewmodel.RapidTestFormItemViewModel;
import java.util.ArrayList;
import java.util.List;
import lombok.Setter;
public class RapidTestReportRowAdapter extends RecyclerView.Adapter<RapidTestReportRowViewHolder> {
private List<RapidTestFormItemViewModel> viewModels;
@Setter
private Boolean editable = true;
private RapidTestReportGridViewHolder.QuantityChangeListener quantityChangeListener;
public RapidTestReportRowAdapter(RapidTestReportGridViewHolder.QuantityChangeListener quantityChangeListener) {
this.quantityChangeListener = quantityChangeListener;
this.viewModels = new ArrayList<>();
}
@Override
public RapidTestReportRowViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_rapid_test_report_row, parent, false);
((LinearLayout) itemView).getChildAt(0).getLayoutParams().width = RapidTestReportFormFragment.ROW_HEADER_WIDTH;
return new RapidTestReportRowViewHolder(itemView);
}
@Override
public void onBindViewHolder(RapidTestReportRowViewHolder holder, int position) {
final RapidTestFormItemViewModel viewModel = viewModels.get(position);
holder.populate(viewModel, editable, quantityChangeListener);
}
@Override
public int getItemCount() {
return viewModels.size();
}
public void refresh(List<RapidTestFormItemViewModel> itemViewModelList, Boolean editable) {
viewModels = itemViewModelList;
this.editable = editable;
notifyDataSetChanged();
}
public void updateTotal() {
notifyItemChanged(getItemCount() - 1);
}
}