package com.alorma.github.ui.adapter; import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.alorma.github.R; import com.alorma.github.sdk.bean.dto.response.GistFile; import com.alorma.github.ui.adapter.base.RecyclerArrayAdapter; /** * Created by Bernat on 02/04/2015. */ public class GistCreatedDetailFilesAdapter extends RecyclerArrayAdapter<GistFile, GistCreatedDetailFilesAdapter.ViewHolder> { private GistCreateAdapterListener gistCreateAdapterListener; public GistCreatedDetailFilesAdapter(LayoutInflater inflater) { super(inflater); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.text_with_overflow, parent, false)); } @Override public void onBindViewHolder(ViewHolder holder, GistFile file) { if (holder.text != null) { holder.text.setText(file.filename); } } public void setGistCreateAdapterListener(GistCreateAdapterListener gistCreateAdapterListener) { this.gistCreateAdapterListener = gistCreateAdapterListener; } public void update(int editingPosition, GistFile file) { if (editingPosition > -1) { if (getItemCount() > editingPosition) { getItems().set(editingPosition, file); notifyItemChanged(editingPosition); } } } public interface GistCreateAdapterListener { void updateFile(int position, GistFile gistFile); void removeFile(int position, GistFile item); } public class ViewHolder extends RecyclerView.ViewHolder { public final TextView text; private final ImageView overflow; public ViewHolder(View itemView) { super(itemView); text = (TextView) itemView.findViewById(android.R.id.text1); overflow = (ImageView) itemView.findViewById(R.id.overflow); text.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (gistCreateAdapterListener != null) { gistCreateAdapterListener.updateFile(getAdapterPosition(), getItem(getAdapterPosition())); } } }); overflow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PopupMenu popupMenu = new PopupMenu(v.getContext(), v); popupMenu.inflate(R.menu.gist_file_created_row_menu); popupMenu.setOnMenuItemClickListener(new MenuListener(getAdapterPosition(), getItem(getAdapterPosition()))); popupMenu.show(); } }); } private class MenuListener implements PopupMenu.OnMenuItemClickListener { private int adapterPosition; private GistFile item; public MenuListener(int adapterPosition, GistFile item) { this.adapterPosition = adapterPosition; this.item = item; } @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.gist_file_created_removed: if (gistCreateAdapterListener != null) { gistCreateAdapterListener.removeFile(adapterPosition, this.item); } break; } return false; } } } }