package ngvl.android.exrecyclerview; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import ngvl.android.exrecyclerview.db.MensagemContract; public class ListaMensagensFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> { private RecyclerView mRecyclerView; private MensagemCursorAdapter mAdapter; private LinearLayoutManager mLayoutManager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_lista_mensagens, container, false); view.findViewById(R.id.fabAdd).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new MensagemFragment().show(getFragmentManager(), "dialog"); } }); mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); mRecyclerView.setHasFixedSize(true); configuraSwipe(); mLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(mLayoutManager); mAdapter = new MensagemCursorAdapter(new MensagemCursorAdapter.AoClicarNoItem() { @Override public void itemFoiClicado(Cursor cursor) { long id = cursor.getLong(cursor.getColumnIndex(MensagemContract._ID)); MensagemFragment f = MensagemFragment.newInstance(id); f.show(getFragmentManager(), "dialog"); } }); mAdapter.setHasStableIds(true); mRecyclerView.setAdapter(mAdapter); getLoaderManager().initLoader(0, null, this); return view; } private void configuraSwipe() { ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback( 0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { return false; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) { final int x = viewHolder.getLayoutPosition(); Cursor cursor = mAdapter.getCursor(); cursor.moveToPosition(x); final long id = cursor.getLong(cursor.getColumnIndex(MensagemContract._ID)); getActivity().getContentResolver().delete( Uri.withAppendedPath(MensagemContract.URI_MENSAGENS, String.valueOf(id)), null, null); } }; ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback); itemTouchHelper.attachToRecyclerView(mRecyclerView); } @Override public Loader onCreateLoader(int id, Bundle args) { return new CursorLoader(getActivity(), MensagemContract.URI_MENSAGENS, null, null, null, MensagemContract.TITULO); } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { mAdapter.setCursor(data); } @Override public void onLoaderReset(Loader loader) { mAdapter.setCursor(null); } }