Skip to content

Instantly share code, notes, and snippets.

@guilhermekrz
Created August 7, 2015 14:54
Show Gist options
  • Save guilhermekrz/9eefe3d9c45fe9e6e13c to your computer and use it in GitHub Desktop.
Save guilhermekrz/9eefe3d9c45fe9e6e13c to your computer and use it in GitHub Desktop.
import android.content.Context;
import android.content.Intent;
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.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.j256.ormlite.android.apptools.OrmLiteCursorAdapter;
import com.j256.ormlite.android.apptools.support.OrmLiteCursorLoader;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.RuntimeExceptionDao;
import com.j256.ormlite.stmt.PreparedQuery;
import com.j256.ormlite.stmt.QueryBuilder;
import java.sql.SQLException;
// TODO Custom imports
public class OrmliteObjectListFragment extends ListFragment {
// DAOs
private Dao<OrmliteObject, Integer> ormliteObjectIntegerDao;
// Attributes
private OrmLiteCursorAdapter<OrmliteObject, View> ormliteViewOrmLiteCursorAdapter;
private boolean loaderInitiated = false;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setEmptyText(getString(R.string.emptyOrmliteObject));
getListView().setDivider(null);
setupOrmliteObject();
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// TODO: handle list item click
}
private void setupOrmliteObject() {
if(ormliteViewOrmLiteCursorAdapter == null){
ormliteViewOrmLiteCursorAdapter = new OrmLiteCursorAdapter<OrmliteObject, View>(getActivity()) {
@Override
public View newView(Context context, Cursor cursor, ViewGroup viewGroup) {
LayoutInflater inflater = LayoutInflater.from(context);
return inflater.inflate(R.layout.row_ormlite_object, viewGroup, false);
}
@Override
public void bindView(View itemView, Context context, OrmliteObject ormliteObject) {
// TODO: Bind your view
}
};
}
setListAdapter(ormliteViewOrmLiteCursorAdapter);
RuntimeExceptionDao<OrmliteObject, Integer> ormliteObjectIntegerRuntimeExceptionDao = DatabaseHelper.getHelper(getActivity()).getOrmliteObjectIntegerRuntimeExceptionDao();
QueryBuilder<OrmliteObject, Integer> ormliteObjectIntegerQueryBuilder = ormliteObjectIntegerRuntimeExceptionDao.queryBuilder();
final PreparedQuery<OrmliteObject> preparedQuery;
try {
ormliteObjectIntegerDao = DatabaseHelper.getHelper(getActivity()).getOrmliteObjectIntegerDao();
// TODO: add where, orderBy to query builder
preparedQuery = ormliteObjectIntegerQueryBuilder.prepare();
LoaderManager.LoaderCallbacks<Cursor> loaderCallbacks = new LoaderManager.LoaderCallbacks<Cursor>() {
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return new OrmLiteCursorLoader<>(getActivity().getBaseContext(), ormliteObjectIntegerDao, preparedQuery);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
ormliteObjectViewOrmLiteCursorAdapter.changeCursor(cursor, ((OrmLiteCursorLoader<OrmliteObject>) loader).getQuery());
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
ormliteObjectViewOrmLiteCursorAdapter.changeCursor(null, null);
}
};
if (loaderInitiated) {
getLoaderManager().restartLoader(0, null, loaderCallbacks);
} else {
getLoaderManager().initLoader(0, null, loaderCallbacks);
loaderInitiated = true;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment