Friday, July 26, 2019

android - Loadmanager onLoadFinished not called



I am trying to load data from the database with the LoaderCallBacks. But the onLoadFinished function from the loadercallbacks will not be called. So as you can see in the log there is a rowcount of 1 that is returned but the list shows no entry also the onLoadFinished is not called as you can see.



SerieFragment






public class SerieFragment extends SherlockListFragment implements
LoaderCallbacks {

private SimpleCursorAdapter adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


String[] from = new String[] { DBContract.Episodes.NAME };
int[] to = new int[] { R.id.name };

Log.i("LoaderManager", "Starting...");
getLoaderManager().initLoader(0, null, this);

adapter = new SimpleCursorAdapter(getActivity(),
R.layout.serie_list_item, null, from, to, 0);


this.setListAdapter(adapter);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {

}

@Override
public Loader onCreateLoader(int id, Bundle args) {

Log.i("LoaderManager", "Creating loader...");

String[] projection = { DBContract.Episodes._ID,
DBContract.Episodes.NAME };
CursorLoader cursorLoader = new CursorLoader(this.getActivity(),
Uri.parse(SerieProvider.CONTENT_URI + "/episodes"), projection,
null, null, null);
return cursorLoader;
}


@Override
public void onLoadFinished(Loader loader, Cursor cursor) {
Log.i("LoaderManager",
"Finished load entry... - Cursor: " + cursor.getCount());
adapter.swapCursor(cursor);
}

@Override
public void onLoaderReset(Loader loader) {
Log.i("LoaderManager", "Resetting loader...");

adapter.swapCursor(null);
}



Contentprovider





public class SerieProvider extends ContentProvider {


private static DatabaseHelper database;
private static final String PROVIDER = "com.drizzlyday.apps.episotron.providers";
private static final String BASE_PATH = "serieprovider";
public static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER
+ "/" + BASE_PATH);

public static final int SERIES = 1;
public static final int EPISODES = 2;


private static final UriMatcher uriMatcher;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER, BASE_PATH, SERIES);
uriMatcher.addURI(PROVIDER, BASE_PATH + "/episodes", EPISODES);
}

@Override
public boolean onCreate() {
database = new DatabaseHelper(getContext());

return false;
}

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}

@Override

public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}

@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
return null;
}


@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {

Log.d("Provider", uri.toString());
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();

int uriType = uriMatcher.match(uri);
switch (uriType) {

case SERIES:
Log.d("Provider", "Series");
queryBuilder.setTables(DBContract.Series.TABLE_NAME);
break;
case EPISODES:
Log.d("Provider", "Episodes");
queryBuilder.setTables(DBContract.Episodes.TABLE_NAME);
break;
default:
throw new IllegalArgumentException("Unknown URI: " + uri);

}

SQLiteDatabase db = database.getReadableDatabase();
SQLiteCursor cursor = (SQLiteCursor) queryBuilder.query(db, projection,
selection, selectionArgs, null, null, sortOrder);
cursor.setNotificationUri(getContext().getContentResolver(), uri);

Log.d("Provider", "Cursor: " + cursor.toString()
+ " - Columncount: " + cursor.getColumnCount()
+ " - Rowcount: " + cursor.getCount());


return cursor;
}

@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}




05-05 23:34:30.855: I/ActivityThread(31903): Pub com.drizzlyday.apps.episotron.providers: com.drizzlyday.apps.episotron.providers.SerieProvider
05-05 23:34:31.035: D/Serie(31903): New Serie fragment
05-05 23:34:31.040: I/LoaderManager(31903): Starting...
05-05 23:34:31.040: I/LoaderManager(31903): Creating loader...
05-05 23:34:31.055: D/AbsListView(31903): Get MotionRecognitionManager
05-05 23:34:31.060: D/AbsListView(31903): Get MotionRecognitionManager
05-05 23:34:31.080: D/dalvikvm(31903): GC_CONCURRENT freed 174K, 8% free 12340K/13383K, paused 2ms+2ms, total 16ms

05-05 23:34:31.090: D/Provider(31903): content://com.drizzlyday.apps.episotron.providers/serieprovider/episodes
05-05 23:34:31.090: D/Provider(31903): Episodes
05-05 23:34:31.100: V/SlidingMenu(31903): setting padding!
05-05 23:34:31.160: D/libEGL(31903): loaded /system/lib/egl/libEGL_mali.so
05-05 23:34:31.175: D/libEGL(31903): loaded /system/lib/egl/libGLESv1_CM_mali.so
05-05 23:34:31.175: D/libEGL(31903): loaded /system/lib/egl/libGLESv2_mali.so
05-05 23:34:31.180: D/(31903): Device driver API match
05-05 23:34:31.180: D/(31903): Device driver API version: 10
05-05 23:34:31.180: D/(31903): User space API version: 10
05-05 23:34:31.180: D/(31903): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Tue Oct 16 15:37:13 KST 2012

05-05 23:34:31.210: D/OpenGLRenderer(31903): Enabling debug mode 0
05-05 23:34:31.215: V/CustomViewBehind(31903): behind INVISIBLE
05-05 23:34:31.260: D/Provider(31903): Cursor: android.database.sqlite.SQLiteCursor@41b0df88 - Columncount: 2 - Rowcount: 1

Answer



I found the problem. Had to add following line to refresh the drawable state of the list:



this.getListView().refreshDrawableState();

No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...