Skip to content

Instantly share code, notes, and snippets.

@wightwulf1944
Last active January 20, 2018 13:01
Show Gist options
  • Save wightwulf1944/abc0ca48150b22124ebb78b6cbb816cb to your computer and use it in GitHub Desktop.
Save wightwulf1944/abc0ca48150b22124ebb78b6cbb816cb to your computer and use it in GitHub Desktop.
adapter for recyclerview
public class StorageIntroAdapter extends RecyclerView.Adapter<StorageIntroAdapter.ViewHolder> {
private final LayoutInflater inflater;
private final List<StorageOption> data;
private int selectedPosition;
private Consumer<Integer> onSelectionChangedListener;
public StorageIntroAdapter(LayoutInflater inflater, List<StorageOption> data) {
this.inflater = inflater;
this.data = data;
}
public void setSelectedPosition(int selectedPosition) {
this.selectedPosition = selectedPosition;
}
public void getSelectedPosition() {
return selectedPosition;
}
public void setOnSelectionChangedListener(Consumer<Integer> listener) {
onSelectionChangedListener = listener;
}
private void onItemSelected(int position) {
int oldSelectedPosition = selectedPosition;
selectedPosition = position;
notifyItemChanged(oldSelectedPosition);
notifyItemChanged(selectedPosition);
onSelectionChangedListener.accept(selectedPosition);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_storage_option, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
StorageOption storageOption = data.get(position);
holder.bind(storageOption, position == selectedPosition);
}
@Override
public int getItemCount() {
return data.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
private TextView pathText;
private TextView freeSpaceText;
private ProgressBar gauge;
private TextView titleText;
ViewHolder(View itemView) {
super(itemView);
titleText = itemView.findViewById(R.id.titleText);
pathText = itemView.findViewById(R.id.pathText);
freeSpaceText = itemView.findViewById(R.id.freeSpaceText);
gauge = itemView.findViewById(R.id.gauge);
itemView.setOnClickListener(v -> onItemSelected(getAdapterPosition()));
}
private void bind(StorageOption storageOption, boolean isSelected) {
itemView.setSelected(isSelected);
titleText.setText(storageOption.getTitle());
pathText.setText(storageOption.getPath());
freeSpaceText.setText(storageOption.getFreeSpaceStr());
gauge.setMax(storageOption.getTotalSpaceMb());
gauge.setProgress(storageOption.getUsedSpaceMb());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment