package com.sanchez.fmf.adapter; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.sanchez.fmf.R; import com.sanchez.fmf.event.MarketClickEvent; import com.sanchez.fmf.model.MarketListItemModel; import com.sanchez.fmf.util.MarketUtils; import java.util.ArrayList; import butterknife.Bind; import butterknife.ButterKnife; import de.greenrobot.event.EventBus; public class MarketListAdapter extends RecyclerView.Adapter<MarketListAdapter.ViewHolder> { private ArrayList<MarketListItemModel> mDataset; private boolean mDisplayDistance; public MarketListAdapter(ArrayList<MarketListItemModel> dataset, boolean displayDistance) { mDataset = dataset; mDisplayDistance = displayDistance; } // Create new views (invoked by the layout manager) @Override public MarketListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.row_card_market, parent, false); view.setOnClickListener((v) -> EventBus.getDefault().post(new MarketClickEvent(v))); return new ViewHolder(view); } // Replace the contents of a view (invoked by the layout manager) @Override public void onBindViewHolder(ViewHolder holder, int position) { // - get element from your dataset at this position // - replace the contents of the view with that element String name = mDataset.get(position).getName(); String dist = MarketUtils.getDistanceFromMarketString(name); holder.mMarketName.setText(name.substring(dist.length() + 1)); if(mDisplayDistance) { holder.mDistance.setText(dist); holder.mDistance.setVisibility(View.VISIBLE); holder.mMiles.setVisibility(View.VISIBLE); } } // Return the size of your dataset (invoked by the layout manager) @Override public int getItemCount() { return mDataset.size(); } public ArrayList<MarketListItemModel> getDataSet() { return mDataset; } public static class ViewHolder extends RecyclerView.ViewHolder { @Bind(R.id.market_name) TextView mMarketName; @Bind(R.id.market_distance) TextView mDistance; @Bind(R.id.miles) TextView mMiles; public ViewHolder(View v) { super(v); ButterKnife.bind(this, v); } } }