package com.duckduckgo.mobile.android.adapters;
import android.content.Context;
import android.database.Cursor;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.duckduckgo.mobile.android.R;
/**
* Created by fgei on 6/19/15.
*/
public class RecyclerSearchAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final String TAG = "recycler_search_adapter";
private static final int TYPE_DIVIDER = 0;
private static final int TYPE_ITEM_RECENT = 1;
private static final int TYPE_ITEM_FAVORITE = 2;
private Context context;
private LayoutInflater inflater;
private Cursor recentCursor;
private Cursor favoriteCursor;
private RecyclerRecentSearchAdapter recentAdapter;
private RecyclerFavoriteSearchAdapter favoriteAdapter;
public RecyclerSearchAdapter(Context context, RecyclerRecentSearchAdapter recentAdapter, RecyclerFavoriteSearchAdapter favoriteAdapter) {
this.context = context;
this.recentAdapter = recentAdapter;
this.favoriteAdapter = favoriteAdapter;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch(viewType) {
case TYPE_ITEM_RECENT:
return recentAdapter.onCreateViewHolder(parent, viewType);
case TYPE_ITEM_FAVORITE:
return favoriteAdapter.onCreateViewHolder(parent, viewType);
case TYPE_DIVIDER:
return new DividerHolder(inflater.inflate(R.layout.search_divider, parent, false));
default:
return new DividerHolder(inflater.inflate(R.layout.search_divider, parent, false));
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch(getItemViewType(position)) {
case TYPE_ITEM_RECENT:
recentAdapter.onBindViewHolder((RecyclerRecentSearchAdapter.ViewHolder) holder, position);
break;
case TYPE_ITEM_FAVORITE:
int favoritePosition = position;
if(recentAdapter!=null && recentAdapter.getItemCount()>0) {
favoritePosition = position - recentAdapter.getItemCount() - 1;
}
favoriteAdapter.onBindViewHolder((RecyclerFavoriteSearchAdapter.ViewHolder) holder, favoritePosition);
}
}
@Override
public int getItemCount() {
int count = 0;
boolean divider = false;
if(recentAdapter!=null && recentAdapter.getItemCount()>0) {
count += recentAdapter.getItemCount();
divider = true;
}
if(favoriteAdapter!=null) {
count += favoriteAdapter.getItemCount();
} else {
divider = false;
}
if(divider) {
count += 1;
}
return count;
}
@Override
public int getItemViewType(int position) {
int type = TYPE_ITEM_RECENT;
if(recentAdapter!=null && recentAdapter.getItemCount()>0) {
if(favoriteAdapter!=null && favoriteAdapter.getItemCount()>0) {
if(position==recentAdapter.getItemCount()) {
type = TYPE_DIVIDER;
} else if(position>recentAdapter.getItemCount()) {
type = TYPE_ITEM_FAVORITE;
}
}
} else {
type = TYPE_ITEM_FAVORITE;
}
return type;
}
/*
public class ViewHolder extends RecyclerView.ViewHolder {
public final TextView textViewSearch;
public final ImageView imageViewIcon;
public ViewHolder(View v) {
super(v);
this.textViewSearch = (TextView) v.findViewById(R.id.item_text);
this.imageViewIcon = (ImageView) v.findViewById(R.id.item_icon);
}
}*/
public class DividerHolder extends RecyclerView.ViewHolder {
public DividerHolder(View v) {
super(v);
}
}
}