sql >> データベース >  >> RDS >> SQLite

Android ListView:bindView()でデータベースクエリを回避する方法は? 1対多の関係データをフェッチする必要があります

    アイデアが浮かびました。リストアイテム内で別のカーソルローダーを使用してください。したがって、これは2レベルのカーソルローダーのようになります。結果は後で投稿します。

    編集

    提案されたアイデアは、問題を処理する正しい方法である必要があります。したがって、私のコードは次のようにリファクタリングされます:

    // In the list view activity:
    
        @Override
        public void bindView(View view, Context context, Cursor cursor) {
    
            AlbumListItem albumListItem = (AlbumListItem)view;
    
            albumListItem.prepareView(getLoaderManager(), cursor);
        }
    
    // AlbumListItem is a class that has a cursor loader to query photos:
    public class AlbumListItem extends RelativeLayout implements LoaderManager.LoaderCallbacks<Cursor>{
    
    
    public void prepareView(LoaderManager loaderManager, Cursor albumCursor){
    
        albumId = albumCursor.getLong(albumCursor.getColumnIndex(AlbumsColumns._ID));
        // Other init stuff
    
        loaderManager.initLoader(UNIQUE_LOADER_ID, null, this);
    }
    
    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    
        // Here is the async query part.
    
        return new CursorLoader(context, PhotosColumns.CONTENT_URI, null, PhotosColumns.ALBUM_ID + " = ?", new String[]{Long.toString(albumId)}, null);
    }
    
    }
    



    1. Pythonモジュールcx_Oracleモジュールが見つかりませんでした

    2. Sind()がPostgreSQLでどのように機能するか

    3. PerconaXtraDBクラスターの監視-主要な指標

    4. テーブルまたはビューの依存オブジェクトを検索する