package com.materialdoc.ui.adapter;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.materialdoc.R;
import com.materialdoc.ui.data.IViewType;
import com.materialdoc.ui.data.ItemDisplayable;
import com.materialdoc.ui.data.TitleDisplayable;
import java.util.ArrayList;
import java.util.List;
public class ItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int ITEM_TYPE_TITLE = 1;
private static final int ITEM_TYPE_DOC = 2;
private List<IViewType> mDataList;
private Listener mListener;
public ItemAdapter() {
mDataList = new ArrayList<>();
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case ITEM_TYPE_TITLE:
View confessionView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_title, parent, false);
return new TitleViewHolder(confessionView);
case ITEM_TYPE_DOC:
View categoryView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_child, parent, false);
return new DocumentViewHolder(categoryView);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (getItemViewType(position) == ITEM_TYPE_TITLE) {
initTitle(holder, position);
} else if (getItemViewType(position) == ITEM_TYPE_DOC) {
initDoc(holder, position);
}
}
@Override
public int getItemViewType(int position) {
IViewType type = mDataList.get(position);
if (type instanceof TitleDisplayable) {
return ITEM_TYPE_TITLE;
} else if (type instanceof ItemDisplayable) {
return ITEM_TYPE_DOC;
}
return 0;
}
@Override
public int getItemCount() {
return mDataList.size();
}
public void setListener(@NonNull Listener listener) {
mListener = listener;
}
public void setData(@NonNull List<? extends IViewType> dataList) {
mDataList.clear();
mDataList.addAll(dataList);
}
private void initTitle(@NonNull RecyclerView.ViewHolder holder, int position) {
TitleViewHolder viewHolder = (TitleViewHolder) holder;
TitleDisplayable title = (TitleDisplayable) mDataList.get(position);
fillTextField(viewHolder.txtTitle, title.getTitle());
}
private void initDoc(@NonNull RecyclerView.ViewHolder holder, int position) {
DocumentViewHolder viewHolder = (DocumentViewHolder) holder;
final ItemDisplayable displayable = (ItemDisplayable) mDataList.get(position);
fillTextField(viewHolder.txtTitle, displayable.getTitle());
fillTextField(viewHolder.txtDescription, displayable.getDescription());
// Context context = viewHolder.imgIcon.getContext().getApplicationContext();
//
// if(TextUtils.isEmpty(displayable.getImagePath())) {
// viewHolder.imageHolder.setVisibility(View.GONE);
// } else {
// String path = String.format("file:///android_asset/%s", displayable.getImagePath());
// L.d(String.format("Loading image: %s", path));
//
// Picasso.with(context)
// .load(path)
// .placeholder(R.drawable.ic_material)
// .error(R.drawable.ic_material)
// .into(viewHolder.imgIcon);
// viewHolder.imageHolder.setVisibility(View.VISIBLE);
// }
viewHolder.layoutDoc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onDocumentClicked(displayable);
}
}
});
}
private void fillTextField(@NonNull TextView txtView, @Nullable String text) {
if (!TextUtils.isEmpty(text)) {
txtView.setText(text);
}
}
private static class TitleViewHolder extends RecyclerView.ViewHolder {
private TextView txtTitle;
public TitleViewHolder(View v) {
super(v);
txtTitle = (TextView) v.findViewById(R.id.txtTitle);
}
}
private static class DocumentViewHolder extends RecyclerView.ViewHolder {
private LinearLayout layoutDoc;
private TextView txtTitle;
private TextView txtDescription;
// private ImageView imgIcon;
// private ViewGroup imageHolder;
public DocumentViewHolder(View v) {
super(v);
layoutDoc = (LinearLayout) v.findViewById(R.id.layoutDoc);
txtTitle = (TextView) v.findViewById(R.id.txtTitle);
txtDescription = (TextView) v.findViewById(R.id.txtDescription);
// imgIcon = (ImageView) v.findViewById(R.id.imgIcon);
// imageHolder = (ViewGroup) v.findViewById(R.id.imageHolder);
}
}
public interface Listener {
void onDocumentClicked(ItemDisplayable displayable);
}
}