Skip to content

Instantly share code, notes, and snippets.

@samuel22gj
Last active November 22, 2016 10:50
Show Gist options
  • Save samuel22gj/db5c5390af3483db33383018d0c4cf3f to your computer and use it in GitHub Desktop.
Save samuel22gj/db5c5390af3483db33383018d0c4cf3f to your computer and use it in GitHub Desktop.
Selected RecyclerView Adapter
public class SelectedRecyclerAdapter extends RecyclerView.Adapter<SelectedRecyclerAdapter.ViewHolder>{
private static final String TAG = SelectedRecyclerAdapter.class.getSimpleName();
public interface OnItemClickListener {
void onItemClick(View v, int position);
}
private OnItemClickListener mListener;
private List<FunctionItem> mItemList;
private int mCurrSelectedItem = -1;
public SelectedRecyclerAdapter(List<FunctionItem> itemList) {
mItemList = itemList;
}
public void setOnItemClickListener(OnItemClickListener listener) {
mListener = listener;
}
public void setSelectedItem(int selectedItem) {
if (mCurrSelectedItem != selectedItem) {
int prevSelectedItem = mCurrSelectedItem;
mCurrSelectedItem = selectedItem;
notifyItemChanged(prevSelectedItem);
notifyItemChanged(mCurrSelectedItem);
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
public View view;
public ImageView icon;
public TextView name;
public ImageView selectedMark;
public ViewHolder(View itemView) {
super(itemView);
view = itemView;
icon = (ImageView) itemView.findViewById(R.id.icon);
name = (TextView) itemView.findViewById(R.id.name);
selectedMark = (ImageView) itemView.findViewById(R.id.selectedMark);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycler_item_view, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
FunctionItem item = mItemList.get(position);
holder.icon.setImageDrawable(item.getIcon());
holder.name.setText(item.getName());
holder.selectedMark.setVisibility(position == mCurrSelectedItem ? View.VISIBLE : View.INVISIBLE);
final int pos = holder.getAdapterPosition();
if (pos != RecyclerView.NO_POSITION) {
holder.view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onItemClick(v, pos);
}
}
});
}
}
@Override
public int getItemCount() {
return mItemList.size();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment