1. ホーム
  2. android

[解決済み] 複数のローダーを持つLoaderManager: 正しいカーソルローダーを取得する方法

2022-05-16 17:43:55

質問

複数のLoaderがある場合、正しいカーソルを取得する方法がよくわかりません。例えば、2つの異なるLoaderを定義するとします。

getLoaderManager().initLoader(0,null,this);
getLoaderManager().initLoader(1,null,this);

であれば onCreateLoader() で、idによって違うことをします。

@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {

    if (id==0){
               CursorLoader loader = new CursorLoader(getActivity(),
            MaterialContentProvider.CONTENT_URI,null,null,null,null);
    }else{
               CursorLoader loader = new CursorLoader(getActivity(),
            CustomerContentProvider.CONTENT_URI,null,null,null,null);
            };
    return loader;
} 

ここまでは良い。しかし、どのようにすれば正しいカーソルを onLoadFinished() では、正しい Cursoradapter に対応する正しい Cursor を特定するための ID を取得できないからです。

@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {


    mycursoradapter1.swapCursor(cursor);
    if(isResumed()){
        setListShown(true);
    }else {
        setListShownNoAnimation(true);
    }



}
//and where to get the cursor for mycursoradapter2

それとも、私が間違っていて、これは1つのフラグメントで2つの異なるカーソルアダプタの結果を得るための間違った方法なのでしょうか?

どのように解決するのですか?

Loaderクラスには getId() . 私はこれがローダーに関連付けたIDを返すことを望みます。