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.ImageView;
import android.widget.TextView;
import com.sanchez.fmf.R;
import com.sanchez.fmf.event.FavoriteClickEvent;
import com.sanchez.fmf.event.FavoriteRemoveEvent;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import de.greenrobot.event.EventBus;
/**
* Created by dakota on 9/13/15.
*/
public class FavoriteListAdapter extends RecyclerView.Adapter<FavoriteListAdapter.ViewHolder> {
private LinkedHashMap<String, String> mDataset;
private List<String> mKeys;
public FavoriteListAdapter(LinkedHashMap<String, String> dataset) {
mDataset = dataset;
mKeys = new ArrayList<>(dataset.keySet());
}
@Override
public FavoriteListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.row_favorite_market, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String id = mKeys.get(mKeys.size() - position - 1); // Sort list by most recently added
String name = mDataset.get(id);
holder.mMarketName.setText(name);
holder.mMarketName.setOnClickListener((v) -> {
EventBus.getDefault().post(new FavoriteClickEvent(id, name));
});
holder.mMarketRemove.setOnClickListener((v) -> {
EventBus.getDefault().post(new FavoriteRemoveEvent(id));
});
if (position == getItemCount() - 1) {
holder.mSeparator.setVisibility(View.GONE);
} else {
holder.mSeparator.setVisibility(View.VISIBLE);
}
}
@Override
public int getItemCount() {
return mDataset.size();
}
public void replaceData(LinkedHashMap<String, String> newData) {
mDataset.clear();
mDataset.putAll(newData);
mKeys.clear();
mKeys.addAll(newData.keySet());
notifyDataSetChanged();
}
public LinkedHashMap<String, String> getDataSet() {
return mDataset;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
@Bind(R.id.favorite_market_name)
TextView mMarketName;
@Bind(R.id.favorite_market_remove)
ImageView mMarketRemove;
@Bind(R.id.favorite_market_separator)
View mSeparator;
public ViewHolder(View v) {
super(v);
ButterKnife.bind(this, v);
}
}
}