package com.ericliudeveloper.sharedbillhelper.ui.fragment; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.ericliudeveloper.sharedbillhelper.R; import com.ericliudeveloper.sharedbillhelper.ui.presenter.CalculationResultPresenter; import com.ericliudeveloper.sharedbillhelper.util.ResouceUtils; /** * A simple {@link Fragment} subclass. */ public class CalculationResultsFragment extends BaseFragment implements CalculationResultPresenter.CalculationResultFace { CalculationResultPresenter mPresenter = new CalculationResultPresenter(this); private TextView tvSum; private TextView tvNumBill; private TextView tvNumMember; private RecyclerView rvPayment; RecyclerView.Adapter mAdapter; public CalculationResultsFragment() { // Required empty public constructor } @Override public void onAttach(Activity activity) { super.onAttach(activity); mPresenter.setContext(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View root = inflater.inflate(R.layout.fragment_calculation_results, container, false); setupViews(root); mPresenter.calculate(); mPresenter.refreshDisplay(); return root; } private void setupViews(View root) { tvSum = (TextView) root.findViewById(R.id.tvSum); tvNumBill = (TextView) root.findViewById(R.id.tvNumBill); tvNumMember = (TextView) root.findViewById(R.id.tvNumMember); rvPayment = (RecyclerView) root.findViewById(R.id.list); rvPayment.setLayoutManager(new LinearLayoutManager(getActivity())); mAdapter = new PaymentListAdapter(); rvPayment.setAdapter(mAdapter); int pixels = ResouceUtils.getAppResources().getDimensionPixelSize(R.dimen.minimum_heigh_of_recyclerview); ViewGroup.LayoutParams params = rvPayment.getLayoutParams(); params.height = pixels; rvPayment.setLayoutParams(params); rvPayment.requestLayout(); } @Override public void showTotalAmount(String amount) { tvSum.setText(amount); } @Override public void showNumberOfMembersPaying(String numMembers) { tvNumMember.setText(numMembers); } @Override public void showNumberOfBillsPaid(String numBills) { tvNumBill.setText(numBills); } private class PaymentListAdapter extends RecyclerView.Adapter { public PaymentListAdapter() { } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return mPresenter.createViewHolder(parent, viewType); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { mPresenter.bindViewHolder(holder, position); } @Override public int getItemCount() { return mPresenter.getItemCount(); } } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_calculation_result, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_send: mPresenter.startActionSend(); return true; default: break; } return super.onOptionsItemSelected(item); } }