package cgeo.geocaching.files;
import cgeo.geocaching.R;
import cgeo.geocaching.ui.recyclerview.AbstractRecyclerViewAdapter;
import cgeo.geocaching.ui.recyclerview.AbstractRecyclerViewHolder;
import android.graphics.Typeface;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;
import java.io.File;
import java.util.List;
import butterknife.BindView;
public class FileSelectionListAdapter extends AbstractRecyclerViewAdapter<FileSelectionListAdapter.ViewHolder> {
private final IFileSelectionView parentView;
@NonNull private final List<File> files;
public FileSelectionListAdapter(@NonNull final IFileSelectionView parentIn, @NonNull final List<File> listIn) {
files = listIn;
parentView = 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.mapfile_item, parent, false);
final ViewHolder viewHolder = new ViewHolder(view);
viewHolder.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View view) {
final File file = files.get(viewHolder.getItemPosition());
parentView.setCurrentFile(file.toString());
parentView.close();
}
});
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
super.onBindViewHolder(holder, position);
final File file = files.get(position);
final String currentFile = parentView.getCurrentFile();
if (currentFile != null && file.equals(new File(currentFile))) {
holder.filename.setTypeface(holder.filename.getTypeface(), Typeface.BOLD);
} else {
holder.filename.setTypeface(holder.filename.getTypeface(), Typeface.NORMAL);
}
holder.filepath.setText(file.getParent());
holder.filename.setText(file.getName());
}
protected static final class ViewHolder extends AbstractRecyclerViewHolder {
@BindView(R.id.mapfilepath) TextView filepath;
@BindView(R.id.mapfilename) TextView filename;
ViewHolder(final View view) {
super(view);
}
}
}