blob: add52c74411624415be75ce9b55cac8d34e2a717 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.syncslides;
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 io.v.syncslides.db.DB;
import io.v.syncslides.model.DynamicList;
import io.v.syncslides.model.ListListener;
import io.v.syncslides.model.Session;
import io.v.syncslides.model.Slide;
/**
* Provides a list of slides to be shown in the RecyclerView of the SlideListFragment.
*/
public class SlideListAdapter extends RecyclerView.Adapter<SlideListAdapter.ViewHolder>
implements ListListener {
private final RecyclerView mRecyclerView;
private DynamicList<Slide> mSlides;
public SlideListAdapter(RecyclerView recyclerView, DB db, DynamicList<Slide> slides) {
mRecyclerView = recyclerView;
mSlides = slides;
mSlides.addListener(this);
}
@Override
public SlideListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.slide_card, parent, false);
v.setOnClickListener(v1 -> {
int position = mRecyclerView.getChildAdapterPosition(v1);
((PresentationActivity) v1.getContext()).navigateToSlide(position);
});
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(SlideListAdapter.ViewHolder holder, int position) {
Slide slide = mSlides.get(position);
holder.mNotes.setText(slide.getNotes());
holder.mImage.setImageBitmap(slide.getThumb());
}
@Override
public int getItemCount() {
return mSlides.getItemCount();
}
@Override
public void onError(Exception e) {
// TODO(kash): Not sure what to do here... Call start()/stop() to reset
// the DynamicList?
}
/**
* Stops any background monitoring of the underlying data.
*/
public void stop() {
mSlides.removeListener(this);
mSlides = null;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public final ImageView mImage;
public final TextView mNotes;
public ViewHolder(View itemView) {
super(itemView);
mImage = (ImageView) itemView.findViewById(R.id.slide_card_image);
mNotes = (TextView) itemView.findViewById(R.id.slide_card_notes);
}
}
}