Come aggiornare l'elenco di visualizzazione i cui dati sono stati interrogati dal database tramite SimpleCursorAdapter?

Vorrei mostrare gli elementi interrogati dal database nell'elenco con SimpleCursorAdapter. Ad esempio, nel database possono essere presenti 20.000 elementi. Voglio caricare solo 100 elementi (_id: 1-100) interrogati invece di caricare tutti gli elementi, quando scorri alla fine dell'elenco di liste, carichi altri 100 elementi (_id: 101-200) interrogati, come ottenerlo? Qualsiasi suggerimento è benvenuto, grazie.

I codici relativi sono i seguenti:

  • come sapere quale supporto telefonico che layout (hdpi, mdpi e xhpi)?
  • C'è un modo per impedire a AlertDialog di chiudere con ingressi non validi?
  • StrictMode per versioni piattaforms piatta
  • rimuovendo gli elementi RecyclerView
  • Come aggiungere il titolo nel layout del cassetto di navigazione?
  • Android per OpenCV - file di traccia di apertura errori, UnsatisfiedLinkError
  • protected void onCreate(Bundle savedInstanceState) { mCursor = managedQuery(CONTENT_URI, PROJECTION, null, null, "_id DESC"); mAdapter = new SimpleCursorAdapter(this,R.layout.list_content, mCursor, keys, values); setListAdapter(mAdapter); } 

    Nel mio elenco definito, voglio caricare più elementi per database di query.

     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { int lastItem = firstVisibleItem + visibleItemCount - 1; if (mListAdapter != null) { if ((lastItem == mListAdapter.getCount()-1) && (mRefreshState != REFRESHING)) { mFooterView.setVisibility(View.VISIBLE); mRefreshState = REFRESHING; new Handler().postDelayed(new Runnable() { public void run() { //execute the task , i want to load more items by query database RefreshListView(LOADING_STORED_INFO); } }, DEFAULT_DELAY_TIMER); } } } 

    Nei dati di caricamento di AsyncTask, faccio l'operazione di query.

      protected Integer doInBackground(Integer... params) { Uri uri = ContentUris.withAppendedId(CONTENT_URI, mCursor.getInt(0)-1); cursor = managedQuery(uri, PROJECTION, null, null, "_id DESC"); return (0 == params[0]) ? 1 : 0; } @Override protected void onPostExecute(Integer result) { mAdapter.changeCursor(cursor);//is this OK? mAdapter.notifyDataSetChanged(); /* if (1 == result) { mListView.setSelection(1); } else { mListView.setSelection(mCount-1); }*/ // Call onRefreshComplete when the list has been refreshed. mListView.onRefreshComplete(result); super.onPostExecute(result); } 

  • TabLayout: fai clic su Tab TextView per scorrere in cima alla list
  • Eliminare le notifiche da un servizio se l'attività è in esecuzione
  • Come i thread interagiscono con gli ascoltatori in Android?
  • Crea il nome di punto di accesso di networking con il codice,
  • Puntatore Null Eccezione: GestureDetector.onTouchEvent per la galleria personalizzata in android per ICS 4.0
  • Android JavascriptInterface Security?
  • One Solution collect form web for “Come aggiornare l'elenco di visualizzazione i cui dati sono stati interrogati dal database tramite SimpleCursorAdapter?”

    Utilizzare l'istruzione LIMIT nella query SQL in questo modo:

     SELECT your_column FROM your_table ORDER BY your_order LIMIT limit_skip, limit_count 

    Quindi è ansible utilizzare un OnScrollListener per recuperare l'indice della prima cella visibile e il numero di celle visibili, in modo da poter aumentare in limit_count coerente limit_skip e limit_count .

    Invece l' AsyncTask generico utilizzare un CursorLoader e implementare LoaderManager.LoaderCallbacks<Cursor> come segue:

     public Loader<Cursor> onCreateLoader(int id, Bundle args){ String orderBy = "_id DESC" if(args != null){ orderBy += " LIMIT " + args.getInt("LIMIT_SKIP") + "," + args.getInt("LIMIT_COUNT"); } return new CursorLoader(this /*context*/, CONTENT_URI, PROJECTION, null, null, orderBy); } public void onLoadFinished(Loader<Cursor> loader, Cursor data){ listAdapter.swapCursor(data); } public void onLoaderReset(Loader<Cursor> loader){ listAdapter.swapCursor(null); } 

    Quindi, in onCreate() , passa il null come cursor al new SimpleCursorAdapter() e crea il CursorLoader in questo modo:

     getLoaderManager().initLoader(0, null, this /*LoaderCallbacks<Cursor>*/); 

    Quindi, in onScroll() , resetta each volta che il loader in questo modo:

     Bundle args = new Bundle(); args.putInt("LIMIT_SKIP", limit_skip_value); args.putInt("LIMIT_COUNT", limit_count_value); getLoaderManager().restartLoader(0, args, this /*LoaderCallbacks<Cursor>*/); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.