package ngvl.android.exrecyclerview; 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.TextView; import ngvl.android.exrecyclerview.db.MensagemContract; public class MensagemCursorAdapter extends RecyclerView.Adapter<MensagemCursorAdapter.VH> { private Cursor mCursor; private AoClicarNoItem mListener; public MensagemCursorAdapter(AoClicarNoItem listener) { mListener = listener; } @Override public VH onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_mensagem, parent, false); final VH vh = new VH(v); v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = vh.getAdapterPosition(); mCursor.moveToPosition(position); if (mListener != null) mListener.itemFoiClicado(mCursor); } }); return vh; } @Override public void onBindViewHolder(VH holder, int position) { mCursor.moveToPosition(position); int idx_titulo = mCursor.getColumnIndex(MensagemContract.TITULO); int idx_descricao = mCursor.getColumnIndex(MensagemContract.DESCRICAO); String titulo = mCursor.getString(idx_titulo); String descricao = mCursor.getString(idx_descricao); holder.mText1.setText(titulo); holder.mText2.setText(descricao); } @Override public int getItemCount() { return (mCursor != null) ? mCursor.getCount() : 0; } @Override public long getItemId(int position) { if (mCursor != null) { if (mCursor.moveToPosition(position)) { int idx_id = mCursor.getColumnIndex(MensagemContract._ID); return mCursor.getLong(idx_id); } else { return 0; } } else { return 0; } } public Cursor getCursor(){ return mCursor; } public void setCursor(Cursor newCursor){ mCursor = newCursor; notifyDataSetChanged(); } public interface AoClicarNoItem { void itemFoiClicado(Cursor cursor); } public static class VH extends RecyclerView.ViewHolder { public TextView mText1; public TextView mText2; public VH(View v) { super(v); mText1 = (TextView) v.findViewById(R.id.text1); mText2 = (TextView) v.findViewById(R.id.text2); } } }