package com.architjn.materialicons.adapters;
import android.content.Context;
import android.content.res.Resources;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.afollestad.materialdialogs.MaterialDialog;
import com.architjn.materialicons.R;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class IconsAdapter extends RecyclerView.Adapter<IconsAdapter.SimpleItemViewHolder> {
private List<Integer> items;
private int arrayId;
private String[] iconsnames;
private Context context;
public final static class SimpleItemViewHolder extends RecyclerView.ViewHolder {
public ImageView icon;
public View mainView;
public SimpleItemViewHolder(View view) {
super(view);
icon = (ImageView) view.findViewById(R.id.icon_grid_iv);
mainView = view;
}
}
public IconsAdapter(Context context, int arrayId) {
this.context = context;
this.arrayId = arrayId;
loadIcon();
}
@Override
public IconsAdapter.SimpleItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).
inflate(R.layout.icon_grid, parent, false);
return new SimpleItemViewHolder(itemView);
}
@Override
public void onBindViewHolder(final SimpleItemViewHolder holder, final int position) {
holder.icon.setImageResource(items.get(position));
holder.mainView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View dialogIconView = View.inflate(context, R.layout.dialog_icon, null);
ImageView dialogIcon = (ImageView) dialogIconView.findViewById(R.id.dialogicon);
dialogIcon.setImageResource(items.get(position));
String name = iconsnames[position].toLowerCase(Locale.getDefault());
new MaterialDialog.Builder(context)
.customView(dialogIconView, false)
.title(convertText(name))
.positiveText(R.string.close)
.show();
}
});
}
@Override
public int getItemCount() {
return this.items.size();
}
private void loadIcon() {
items = new ArrayList<>();
final String packageName = context.getPackageName();
addIcon(context.getResources(), packageName, arrayId);
}
private void addIcon(Resources resources, String packageName, int list) {
iconsnames = resources.getStringArray(list);
for (String extra : iconsnames) {
int res = resources.getIdentifier(extra, "drawable", packageName);
if (res != 0) {
final int thumbRes = resources.getIdentifier(extra, "drawable", packageName);
if (thumbRes != 0)
items.add(thumbRes);
}
}
}
private String convertText(String name) {
String partialConvertedText = name.replaceAll("_", " ");
String[] text = partialConvertedText.split("\\s+");
StringBuilder sb = new StringBuilder();
if (text[0].length() > 0) {
sb.append(Character.toUpperCase(text[0].charAt(0))).append(text[0].subSequence(1, text[0].length()).toString().toLowerCase());
for (int i = 1; i < text.length; i++) {
sb.append(" ");
sb.append(Character.toUpperCase(text[i].charAt(0))).append(text[i].subSequence(1, text[i].length()).toString().toLowerCase());
}
}
return sb.toString();
}
}