package com.gordonwong.materialsheetfab.sample.adapters; import android.content.Context; import android.support.v7.widget.CardView; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.gordonwong.materialsheetfab.sample.R; import com.gordonwong.materialsheetfab.sample.models.Note; /** * Created by Gordon Wong on 7/18/2015. * * Adapter for the all items screen. */ public class NotesAdapter extends RecyclerView.Adapter<NotesAdapter.ViewHolder> { private Note[] notes; public NotesAdapter(Context context, int numNotes) { notes = generateNotes(context, numNotes); } @Override public NotesAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item_note, parent, false); return new ViewHolder(v); } @Override public void onBindViewHolder(ViewHolder holder, int position) { Note noteModel = notes[position]; String title = noteModel.getTitle(); String note = noteModel.getNote(); String info = noteModel.getInfo(); int infoImage = noteModel.getInfoImage(); int color = noteModel.getColor(); // Set text holder.titleTextView.setText(title); holder.noteTextView.setText(note); holder.infoTextView.setText(info); // Set image if (infoImage != 0) { holder.infoImageView.setImageResource(infoImage); } // Set visibilities holder.titleTextView.setVisibility(TextUtils.isEmpty(title) ? View.GONE : View.VISIBLE); holder.noteTextView.setVisibility(TextUtils.isEmpty(note) ? View.GONE : View.VISIBLE); holder.infoLayout.setVisibility(TextUtils.isEmpty(info) ? View.GONE : View.VISIBLE); // Set padding int paddingTop = (holder.titleTextView.getVisibility() != View.VISIBLE) ? 0 : holder.itemView.getContext().getResources() .getDimensionPixelSize(R.dimen.note_content_spacing); holder.noteTextView.setPadding(holder.noteTextView.getPaddingLeft(), paddingTop, holder.noteTextView.getPaddingRight(), holder.noteTextView.getPaddingBottom()); // Set background color ((CardView) holder.itemView).setCardBackgroundColor(color); } @Override public int getItemCount() { return notes.length; } private Note[] generateNotes(Context context, int numNotes) { Note[] notes = new Note[numNotes]; for (int i = 0; i < notes.length; i++) { notes[i] = Note.randomNote(context); } return notes; } public static class ViewHolder extends RecyclerView.ViewHolder { public TextView titleTextView; public TextView noteTextView; public LinearLayout infoLayout; public TextView infoTextView; public ImageView infoImageView; public ViewHolder(View itemView) { super(itemView); titleTextView = (TextView) itemView.findViewById(R.id.note_title); noteTextView = (TextView) itemView.findViewById(R.id.note_text); infoLayout = (LinearLayout) itemView.findViewById(R.id.note_info_layout); infoTextView = (TextView) itemView.findViewById(R.id.note_info); infoImageView = (ImageView) itemView.findViewById(R.id.note_info_image); } } }