package cgeo.geocaching.files; import cgeo.geocaching.R; import cgeo.geocaching.ui.dialog.Dialogs; import cgeo.geocaching.ui.recyclerview.AbstractRecyclerViewAdapter; import cgeo.geocaching.ui.recyclerview.AbstractRecyclerViewHolder; import cgeo.geocaching.utils.FileUtils; import android.content.DialogInterface; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.io.File; import java.util.List; import butterknife.BindView; class GPXListAdapter extends AbstractRecyclerViewAdapter<GPXListAdapter.ViewHolder> { private final GpxFileListActivity activity; @NonNull private final List<File> files; protected static final class ViewHolder extends AbstractRecyclerViewHolder { @BindView(R.id.filepath) protected TextView filepath; @BindView(R.id.filename) protected TextView filename; ViewHolder(final View view) { super(view); } } GPXListAdapter(final GpxFileListActivity parentIn, final List<File> listIn) { files = listIn; activity = parentIn; } @Override public int getItemCount() { return files.size(); } @Override public ViewHolder onCreateViewHolder(final ViewGroup parent, final int position) { final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.gpx_item, parent, false); final ViewHolder viewHolder = new ViewHolder(view); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View view) { final File file = files.get(viewHolder.getItemPosition()); (new GPXImporter(activity, activity.getListId(), null)).importGPX(file); } }); viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(final View view) { final File file = files.get(viewHolder.getItemPosition()); Dialogs.confirmYesNo(activity, R.string.gpx_import_delete_title, activity.getString(R.string.gpx_import_delete_message, file.getName()), new DialogInterface.OnClickListener() { @Override public void onClick(final DialogInterface dialog, final int id) { final int currentPosition = viewHolder.getAdapterPosition(); if (currentPosition != RecyclerView.NO_POSITION) { FileUtils.deleteIgnoringFailure(file); files.remove(currentPosition); notifyItemRemoved(currentPosition); } } }); return true; } }); return viewHolder; } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { super.onBindViewHolder(holder, position); final File file = files.get(position); holder.filepath.setText(file.getParent()); holder.filename.setText(file.getName()); } }