package com.roly.nfc.crypto.ui.fragment;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import com.roly.nfc.crypto.R;
import com.roly.nfc.crypto.data.NoteDatabase;
import com.roly.nfc.crypto.data.NoteProvider;
import com.roly.nfc.crypto.ui.activity.NoteListActivity;
public class NoteListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor>{
private SimpleCursorAdapter adapter;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String[] from = new String[]{NoteDatabase.KEY_TITLE, NoteDatabase.KEY_BODY};
int[] to = {R.id.note_list_item_title, R.id.note_list_item_content};
adapter = new SimpleCursorAdapter(getActivity(), R.layout.note_item, null, from, to, SimpleCursorAdapter.NO_SELECTION){
@Override
public void setViewText(TextView v, String text) {
if(v.getId() == R.id.note_list_item_content && text.endsWith("\n")){
text = text.substring(0, text.length() - 1);
}
super.setViewText(v, text);
}
};
setListAdapter(adapter);
ListView listView = getListView();
listView.setDivider(null);
setEmptyText("You don't have any note saved for now.");
setListShown(false);
getLoaderManager().initLoader(0, null, this);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
NoteListActivity activity = (NoteListActivity) getActivity();
Cursor cursor = (Cursor) adapter.getItem(position);
String title = cursor.getString(NoteDatabase.TITLE_COLUMN);
String content = cursor.getString(NoteDatabase.BODY_COLUMN);
activity.askTag(id, title, content);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new CursorLoader(getActivity(), NoteProvider.CONTENT_URI, null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
setListShown(true);
adapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
}