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 org.openlmis.core.R;
import org.openlmis.core.view.holder.UnpackKitWithLotViewHolder;
import org.openlmis.core.view.viewmodel.InventoryViewModel;
import org.openlmis.core.view.viewmodel.UnpackKitInventoryViewModel;
import org.openlmis.core.view.widget.SingleClickButtonListener;
import java.util.List;
import rx.functions.Action1;
public class UnpackKitAdapter extends InventoryListAdapterWithBottomBtn implements FilterableAdapter {
private final SingleClickButtonListener onClickListener;
private Action1 setConfirmNoStockReceivedAction = new Action1<UnpackKitInventoryViewModel>() {
@Override
public void call(UnpackKitInventoryViewModel unpackKitInventoryViewModel) {
unpackKitInventoryViewModel.setConfirmedNoStockReceived(true);
unpackKitInventoryViewModel.getNewLotMovementViewModelList().clear();
UnpackKitAdapter.this.notifyDataSetChanged();
}
};
public UnpackKitAdapter(List<InventoryViewModel> data, SingleClickButtonListener onClickListener) {
super(data);
this.onClickListener = onClickListener;
}
@Override
protected void populate(RecyclerView.ViewHolder viewHolder, int position) {
final InventoryViewModel viewModel = filteredList.get(position);
((UnpackKitWithLotViewHolder) viewHolder).populate(viewModel, setConfirmNoStockReceivedAction);
}
@Override
protected VHFooter onCreateFooterView(ViewGroup parent) {
VHFooter vhFooter = new VHFooter(LayoutInflater.from(parent.getContext()).inflate(R.layout.view_complete_btn, parent, false));
vhFooter.itemView.findViewById(R.id.btn_complete).setOnClickListener(onClickListener);
return vhFooter;
}
@Override
public RecyclerView.ViewHolder onCreateItemViewHolder(ViewGroup parent) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_unpack_kit_with_lots, parent, false);
return new UnpackKitWithLotViewHolder(view);
}
@Override
public int validateAll() {
int position = -1;
for (int i = 0; i < data.size(); i++) {
if (!data.get(i).validate()) {
if (position == -1 || position > i) {
position = i;
}
}
}
this.notifyDataSetChanged();
return position;
}
}