2014-09-30 12 views
8

documentazione Android ha detto: questo metodo è stata sconsigliata a livello di API 11.Quale sostituto appropriato di deprecato "managedQuery"?

Questo è il codice:

class GridViewActivity_ extends  Activity 
    { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.gridview); 

    GridView gv = (GridView)findViewById(R.id.gridview); 

    Cursor c = managedQuery(Contacts.CONTENT_URI, 
      null, null, null, Contacts.DISPLAY_NAME); 

    String[] cols = new String[]{Contacts.DISPLAY_NAME}; 
    int[] views = new int[] {android.R.id.text1}; 

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      android.R.layout.simple_list_item_1, 
      c, cols, views); 
    gv.setAdapter(adapter); 
} 
} 

Come sostituire questo codice, non è deprecato codice?

Per l'attività, non frammento ...

+0

cursore caricatore http: // sviluppatore .android.com/reference/android/content/CursorLoader.html –

risposta

2

Secondo questo grande tutorial:

public class GridViewActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks<Cursor> 
{ 
    private SimpleCursorAdapter mAdapter; 

    @Override 
public Loader<Cursor> onCreateLoader(int p1, Bundle p2) 
{ 
    return new CursorLoader(this, Contacts.CONTENT_URI, null, null, null, Contacts.DISPLAY_NAME); 
} 

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

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


@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    // TODO: Implement this method 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.gridview);  
    GridView gv = (GridView)findViewById(R.id.gridview); 
    String[] cols = new String[]{Contacts.DISPLAY_NAME}; 
    int[] views = new int[]{android.R.id.text1}; 
    mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null, cols,views, 0); 
    gv.setAdapter(mAdapter); 
    getSupportLoaderManager().initLoader(0, null, this); 
} 

} 
17

Si può vedere questo link: Deprecated ManagedQuery() issue

Cursor cursor = getContentResolver().query(contentUri, null, null, null, Contacts.DISPLAY_NAME); 
+1

Solo una cosa da notare. Ciò richiede 4 parametri, gestitoQuery richiesto solo 3. Ho ignorato uno dei null! –

+0

che dovrebbe essere accettato risposta – androidXP

Problemi correlati