SimpleCursorAdapter come mostrare un'image?

Sto facendo un'applicazione di ricette android in cui utilizzo un database. Nel database c'è una colonna denominata "" immagini, where immagino il nome del file dell'image della ricetta in cui memorizzo nella cartella disegnabile. Ora voglio fare un elenco con le ricette, mostrando: 1) il titolo della ricetta 2) una breve descrizione e 3) un'image della ricetta Per fare ciò uso un Simplecursoradaptor.

Il mio problema è che non riesco a mostrare l'image.

  • getView () restituisce null
  • AndroidAnnotations Niente generato, attività vuota
  • Android - non riesce a catturare il backspace / cancellare premere in soft. tastiera
  • Come funziona android: noHistory = "vero" lavoro?
  • Come sapere se un utente specifico ha valutato un'applicazione Android?
  • considerazioni di progettazione android: AsyncTask vs Service (IntentService?)
  • Voglio leggere il nome del file dalla colonna "immagini" e quindi impostare l'image al mio immaginario (R.imageview1)

    Ecco il mio codice fino ad ora:

    public class RecipesMainActivity extends Activity { public static final String ROW_ID = "row_id"; //Intent extra key private ListView esodaListView; // the ListActivity's ListView private SimpleCursorAdapter esodaAdapter; // adapter for ListView DatabaseConnector databaseConnector = new DatabaseConnector(RecipesMainActivity.this); // called when the activity is first created @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recipes_main); esodaListView = (ListView)findViewById(R.id.esodaList); esodaListView.setOnItemClickListener(viewEsodaListener); databaseConnector.open(); // map each esoda to a TextView in the ListView layout // The desired columns to be bound String[] from = new String[] {"title","ingredients","image"}; // built an String arrays named "from" //The XML defined views which the data will be bound to int[] to = new int[] { R.id.esodaTextView, R.id.amountTextView, R.id.imageView1}; // built an int arrays named "to" // EsodaMainActivity.this = The context in which the ListView is running // R.layout.esoda_list_item = Id of the layout that is used to display each item in ListView // null = // from = String arrays containing the column names to display // to = Int arrays containing the column names to display esodaAdapter = new SimpleCursorAdapter (this, R.layout.recipe_list_item, null, from, to); esodaListView.setAdapter(esodaAdapter); // set esodaView's adapter } // end of onCreate method @Override protected void onResume() { super.onResume(); // call super's onResume method // create new GetEsodaTask and execute it // GetEsodaTask is an AsyncTask object new GetEsodaTask().execute((Object[]) null); } // end of onResume method // onStop method is executed when the Activity is no longer visible to the user @Override protected void onStop() { Cursor cursor= esodaAdapter.getCursor(); // gets current cursor from esodaAdapter if (cursor != null) cursor.deactivate(); // deactivate cursor esodaAdapter.changeCursor(null); // adapter now has no cursor (removes the cursor from the CursorAdapter) super.onStop(); } // end of onStop method // this class performs db query outside the GUI private class GetEsodaTask extends AsyncTask<Object, Object, Cursor> { // we create a new DatabaseConnector obj // EsodaMainActivity.this = Context DatabaseConnector databaseConnector = new DatabaseConnector(RecipesMainActivity.this); // perform the db access @Override protected Cursor doInBackground(Object... params) { databaseConnector.open(); // get a cursor containing call esoda return databaseConnector.getAllEsoda(); // the cursor returned by getAllContacts() is passed to method onPostExecute() } // end of doInBackground method // here we use the cursor returned from the doInBackground() method @Override protected void onPostExecute(Cursor result) { esodaAdapter.changeCursor(result); // set the adapter's Cursor databaseConnector.close(); } // end of onPostExecute() method } // end of GetEsodaTask class 

    Ho cercato molto online ma non ho potuto trovare qualcosa che potrebbe aiutarmi.

    Posso impostare un'image in un'image con simplecursoradaptor o no?

    Devo fare un'adattatore cursore personalizzato? E se devo fare un modo personalizzato come posso farlo?

  • Avvio di un'attività da un servizio dopo il button HOME premuto senza il ritardo di 5 secondi
  • come passare un argomento a un test android junit (test parametrizzato)
  • onKeyDown e onKeyLongPress
  • Dove è la vista degli avvisi in Android Studio?
  • Attività di apertura dopo aver premuto push notifica android
  • Come verificare se un valore già esiste nel database in Android
  • One Solution collect form web for “SimpleCursorAdapter come mostrare un'image?”

    È necessario impostare il ViewBinder della scheda per impostare l'image di ImageView sul valore ricevuto dal DB.

      esodaAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { @Override public boolean setViewValue (View view, Cursor cursor, int columnIndex){ if (view.getId() == R.id.imageView1) { ImageView IV=(ImageView) view; int resID = getApplicationContext().getResources().getIdentifier(cursor.getString(columnIndex), "drawable", getApplicationContext().getPackageName()); IV.setImageDrawable(getApplicationContext().getResources().getDrawable(resID)); return true; } return false; } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.