0

私はこれに一日中取り組んでおり、すべてがどのように適合するかを理解しようとしており、うまく適合するようにコードを作り直しています。
だから私は私が持っているものをあなたに見せます。エラーはありません。空白です。

MyAgendaLoaderManager.java:

public class MyAgendaLoaderManager implements LoaderCallbacks<Cursor>{

MyAgendaAdapter agendaAdapter;
Context mContext;
String date;

public MyAgendaLoaderManager(Context context, MyAgendaAdapter adapter, String date) {
    agendaAdapter = adapter;
    mContext = context;
    this.date = date;
}

@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
    Uri baseUri = SmartCalProvider.CONTENT_URI;
    return new CursorLoader(mContext, baseUri, 
            new String[] {"_id, event_name, start_date, start_time, end_date, end_time, location"}, 
            "WHERE date(?) >= start_date and date(?) <= end_date", new String[]{date, date}, null);
}

@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
    // TODO Auto-generated method stub
    agendaAdapter.swapCursor(arg1);
}

@Override
public void onLoaderReset(Loader<Cursor> arg0) {
    // TODO Auto-generated method stub
    agendaAdapter.swapCursor(null);
}

}

CalProvider.java:

public class SmartCalProvider extends ContentProvider {
public static final String AUTHORITY = "content://com.smartcal.eventprovider";
public static final Uri CONTENT_URI = Uri.parse(AUTHORITY);

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "cal.db";

private SmartCalOpenHelper openHelper;
private SQLiteDatabase database;

@Override
public boolean onCreate() {
    openHelper = new SmartCalOpenHelper(getContext());
    return true;
}


@Override
public String getType(Uri uri) {
    return null;
}

@Override
public Cursor query(Uri uri, String[] projection, String selection,
        String[] selectionArgs, String sortOrder) {
    database = openHelper.getWritableDatabase();
    return database.query("events_info", projection, selection, selectionArgs, null, null, null);
}

@Override
public Uri insert(Uri uri, ContentValues values) {
    return null;
}

@Override
public int delete(Uri arg0, String arg1, String[] arg2) {
    return 0;
}


@Override
public int update(Uri uri, ContentValues values, String selection,
        String[] selectionArgs) {
    return 0;
}
}

それが重要な場合は、メイン アクティビティでそれを実行するコードを次に示します。

agendaAdapter = new MyAgendaAdapter(this, null);
MyAgendaLoaderManager loader = new MyAgendaLoaderManager(this, agendaAdapter, getChosenDate());

私はそれがどのように空白になるかわかりません。CursorLoader と LoaderManager の一部を意図的に空白のままにしたことを覚えておいてください。これは、エラーがあったことを確認するためにすべてを入力したくなかったためです。ではなかった。私が何を間違えたのかを理解する助けがあれば、大歓迎です。

編集:実際、考えてみると、アダプターがそれを保持するビューを作成するとき以外に、私が行っていることを特定のリストに実際に結びつけるものは何もありません。しかし、そのビューは通常のレイアウトの一部ではありません。多分それは私が持っているエラーですが、残念ながら私はそうする方法がわかりません.

4

1 に答える 1

2

You shouldn't instantiate a loader directly. You need to go through the activities getLoaderManager() method for it to be properly initialized and started. So from your activity call getLoaderManager().initLoader()/restartLoader() as needed.

于 2012-06-18T07:03:20.533 に答える