1 package com.example.android.scopeddirectoryaccess; 2 3 import android.provider.DocumentsContract; 4 import android.support.v7.widget.RecyclerView; 5 import android.view.LayoutInflater; 6 import android.view.View; 7 import android.view.ViewGroup; 8 import android.widget.ImageView; 9 import android.widget.TextView; 10 11 import java.util.ArrayList; 12 import java.util.List; 13 14 /** 15 * Provide views to RecyclerView with the directory entries. 16 */ 17 public class DirectoryEntryAdapter extends RecyclerView.Adapter<DirectoryEntryAdapter.ViewHolder> { 18 19 private List<DirectoryEntry> mDirectoryEntries; 20 DirectoryEntryAdapter()21 public DirectoryEntryAdapter() { 22 this(new ArrayList<DirectoryEntry>()); 23 } 24 DirectoryEntryAdapter(List<DirectoryEntry> directoryEntries)25 public DirectoryEntryAdapter(List<DirectoryEntry> directoryEntries) { 26 mDirectoryEntries = directoryEntries; 27 } 28 29 @Override onCreateViewHolder(ViewGroup viewGroup, int viewType)30 public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { 31 View v = LayoutInflater.from(viewGroup.getContext()) 32 .inflate(R.layout.directory_entry, viewGroup, false); 33 return new ViewHolder(v); 34 } 35 36 @Override onBindViewHolder(ViewHolder viewHolder, final int position)37 public void onBindViewHolder(ViewHolder viewHolder, final int position) { 38 viewHolder.fileName.setText(mDirectoryEntries.get(position).fileName); 39 viewHolder.mimeType.setText(mDirectoryEntries.get(position).mimeType); 40 41 if (DocumentsContract.Document.MIME_TYPE_DIR 42 .equals(mDirectoryEntries.get(position).mimeType)) { 43 viewHolder.imageView.setImageResource(R.drawable.ic_directory_grey600_36dp); 44 } else { 45 viewHolder.imageView.setImageResource(R.drawable.ic_description_grey600_36dp); 46 } 47 } 48 49 @Override getItemCount()50 public int getItemCount() { 51 return mDirectoryEntries.size(); 52 } 53 setDirectoryEntries(List<DirectoryEntry> directoryEntries)54 public void setDirectoryEntries(List<DirectoryEntry> directoryEntries) { 55 mDirectoryEntries = directoryEntries; 56 } 57 58 /** 59 * Provide a reference to the type of views that you are using (custom ViewHolder) 60 */ 61 public class ViewHolder extends RecyclerView.ViewHolder { 62 63 public TextView fileName; 64 public TextView mimeType; 65 public ImageView imageView; 66 ViewHolder(View v)67 public ViewHolder(View v) { 68 super(v); 69 fileName = (TextView) v.findViewById(R.id.textview_filename); 70 mimeType = (TextView) v.findViewById(R.id.textview_mimetype); 71 imageView = (ImageView) v.findViewById(R.id.imageview_entry); 72 } 73 } 74 } 75 76