package org.openlmis.core.view.holder; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import org.openlmis.core.R; import org.openlmis.core.utils.TextStyleUtil; import org.openlmis.core.view.viewmodel.PhysicalInventoryViewModel; import org.openlmis.core.view.widget.PhysicalInventoryLotListView; import roboguice.inject.InjectView; public class PhysicalInventoryWithLotViewHolder extends BaseViewHolder { @InjectView(R.id.tv_product_name) TextView tvProductName; @InjectView(R.id.tv_product_unit) TextView tvProductUnit; @InjectView(R.id.ic_done) View icDone; @InjectView(R.id.tv_inventory_item_soh) TextView tvSOH; @InjectView(R.id.vg_inventory_item_soh) ViewGroup vgStockOnHand; @InjectView(R.id.view_lot_list) PhysicalInventoryLotListView lotListView; protected PhysicalInventoryViewModel viewModel; public PhysicalInventoryWithLotViewHolder(View itemView) { super(itemView); } public void populate(final PhysicalInventoryViewModel viewModel, final String queryKeyWord, final InventoryItemStatusChangeListener refreshCompleteCountListener) { this.viewModel = viewModel; lotListView.initLotListView(viewModel, new InventoryItemStatusChangeListener() { @Override public void onStatusChange(boolean done) { updateTitle(done, queryKeyWord); refreshCompleteCountListener.onStatusChange(done); } }); updateTitle(viewModel.isDone(), queryKeyWord); } private void highlightQueryKeyWord(PhysicalInventoryViewModel inventoryViewModel, String queryKeyWord, boolean done) { if (done) { tvProductName.setText(TextStyleUtil.getHighlightQueryKeyWord(queryKeyWord, inventoryViewModel.getGreenName())); tvProductUnit.setText(TextStyleUtil.getHighlightQueryKeyWord(queryKeyWord, inventoryViewModel.getGreenUnit())); } else { tvProductName.setText(TextStyleUtil.getHighlightQueryKeyWord(queryKeyWord, inventoryViewModel.getStyledName())); tvProductUnit.setText(TextStyleUtil.getHighlightQueryKeyWord(queryKeyWord, inventoryViewModel.getStyledUnit())); } } private void updateTitle(boolean done, String queryKeyWord) { icDone.setVisibility(done ? View.VISIBLE : View.GONE); highlightQueryKeyWord(viewModel, queryKeyWord, done); vgStockOnHand.setVisibility(done ? View.VISIBLE : View.GONE); if (done) { tvSOH.setText(String.valueOf(viewModel.getLotListQuantityTotalAmount())); } } public interface InventoryItemStatusChangeListener { void onStatusChange(boolean done); } }