0

내 ListView에 행을로드하는 데 시간이 걸리기 때문에 LoaderManager를 구현하려고합니다. 내가 온라인으로 찾은 모든 사례는 CONTENT_URI를 계속 언급하고 있습니다. 대신 null 열 '의 (LoadManager, SimpleCursorAdapter, ViewBinder - URI가 없습니까?

@Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    ... 
    String path = "/sdcard/mytunesdb.sqlite"; // Warning, yes, I know.. 

    db = SQLiteDatabase.openDatabase(path, null, 0); 

    lvCustomList = (ListView) findViewById(R.id.lv_custom_list); 

    String[] columns = new String[] { "Name" }; 

    // THE XML DEFINED VIEWS FOR EACH FIELD TO BE BOUND TO 
    int[] to = new int[] { R.id.lv_tune }; 

    Cursor c = db.rawQuery("SELECT rowid _id, Name FROM Tune ORDER BY Name", null); 

    cAdapter = new MySimpleCursorAdapter(this, R.layout.like_hate_row, c, columns, to, 0); 

    viewBinder = new CustomViewBinder(); 

    cAdapter.setViewBinder((ViewBinder) viewBinder); 

    lvCustomList.setAdapter(cAdapter); 

OK, 그래서 cAdapter가 null의 돌기가 생성되도록 위의 코드를 변경 한 후 LoaderManager 콜백을 구현 시작합니다

여기 내 ListView에 내용을로드하는 내 예전의 코드입니다 '매개 변수). 이것은 내가 지금까지 얻은 것입니다. 어떻게 rawQuery를 onCreateLoader 메서드에 넣을 수 있습니까?

@Override 
    public Loader<Cursor> onCreateLoader(int id, Bundle args) 
    { 
    String[] columns = new String[] { "Name" }; 

!!! HELP - I don't have a CONTENT_URI - my database is external - what do I put below? 
    CursorLoader cursorLoader = new CursorLoader(getActivity(), 
       TutListProvider.CONTENT_URI, columns, null, null, null); 

    return cursorLoader; 
    } 

    @Override 
    public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) 
    { 
    cAdapter.swapCursor(cursor); 
    } 

    @Override 
    public void onLoaderReset(Loader<Cursor> loader) 
    { 
    cAdapter.swapCursor(null); 
    } 

대신 SQL 데이터베이스에 URI 코드를 유지하고 ContentProvider를 구현해야합니까 ??

답변

0

다른 StackOverlow 게시물에 언급 된 SimpleCursorLoader의 도움으로 이것을 알아 냈습니다. 새로운 문제가 있지만 아래 링크에서 내 솔루션을 찾을 수 있습니다.

My Solution