package com.xabber.android.ui.adapter; import android.content.Context; import android.content.Intent; import android.support.v4.content.FileProvider; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.PopupMenu; import android.widget.TextView; import com.xabber.android.R; import com.xabber.android.data.extension.file.FileManager; import java.io.File; import java.util.Arrays; import java.util.Collections; public class LogFilesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private File[] files; public void setFiles(File[] files) { if (files == null) { return; } this.files = files; Arrays.sort(files, Collections.reverseOrder()); notifyDataSetChanged(); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new FileViewHolder(LayoutInflater.from(parent.getContext()) .inflate(android.R.layout.simple_list_item_1, parent, false)); } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { FileViewHolder fileHolder = (FileViewHolder) holder; final File file = files[position]; fileHolder.fileName.setText(file.getName()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PopupMenu popup = new PopupMenu(holder.itemView.getContext(), holder.itemView); popup.inflate(R.menu.item_log_file); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_log_file_open: viewFile(file, holder.itemView.getContext()); return true; case R.id.action_log_file_send: sendFile(file, holder.itemView.getContext()); return true; } return false; } }); popup.show(); } }); } private void viewFile(File file, Context context) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setDataAndType(FileManager.getFileUri(file), "text/plain"); context.startActivity(intent); } private void sendFile(File file, Context context) { Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); emailIntent .setType("vnd.android.cursor.dir/email"); emailIntent .putExtra(Intent.EXTRA_STREAM, FileManager.getFileUri(file)); emailIntent .putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.application_title_full) + " log file"); context.startActivity(Intent.createChooser(emailIntent , "Send log file")); } @Override public int getItemCount() { if (files != null) { return files.length; } return 0; } private static class FileViewHolder extends RecyclerView.ViewHolder { TextView fileName; FileViewHolder(View itemView) { super(itemView); fileName = (TextView) itemView.findViewById(android.R.id.text1); } } }