package com.duckduckgo.mobile.android.adapters; import android.content.Context; import android.database.Cursor; import android.support.v7.widget.RecyclerView; import android.util.Log; 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; import com.duckduckgo.mobile.android.bus.BusProvider; import com.duckduckgo.mobile.android.events.savedSearchEvents.SavedSearchItemSelectedEvent; public class RecyclerFavoriteSearchAdapter extends RecyclerView.Adapter<RecyclerFavoriteSearchAdapter.ViewHolder> { private Context context; private LayoutInflater inflater; public Cursor cursor; 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 RecyclerFavoriteSearchAdapter(Context context, Cursor cursor) { this.context = context; this.cursor = cursor; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int ViewType) { View v = inflater.inflate(R.layout.item_search, parent, false); ViewHolder holder = new ViewHolder(v); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { cursor.moveToPosition(position); final String data = cursor.getString(cursor.getColumnIndex("query")); holder.textViewSearch.setText(capitalizeWords(data)); holder.imageViewIcon.setImageDrawable(context.getResources().getDrawable(R.drawable.favorite)); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { BusProvider.getInstance().post(new SavedSearchItemSelectedEvent(data)); Log.e("aaa", "favorite search on click: "+data); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { //BusProvider.getInstance().post(new SavedSearchItemLongClickEvent(data)); Log.e("aaa", "favorite search on long click: "+data); return true; } }); } @Override public int getItemCount() { return cursor.getCount(); } public void changeCursor(Cursor cursor) { Cursor oldCursor = swapCursor(cursor); if(oldCursor!=null) { oldCursor.close(); } } public Cursor swapCursor(Cursor newCursor) { if(cursor==newCursor) { return null; } Cursor oldCursor = cursor; cursor = newCursor; if(cursor!=null) { notifyDataSetChanged(); } return oldCursor; } public String capitalizeWords(String input) { StringBuilder out = new StringBuilder(); for(int i=0; i<input.length(); i++) { if(i==0 || (i>0 && input.charAt(i-1)==' ')) { out.append(input.substring(i, i+1).toUpperCase()); } else { out.append(input.substring(i, i+1)); } } return out.toString(); } }