Problème lors de l'affichage des noms d'éléments ainsi que des images stockées dans sqlite pour Android

Je stocke les objets et leurs détails dans le sqlite et affiche les images des objets ainsi que les noms des éléments pour lesquels j'utilise

private void getDataAndPopulate() { Cursor cursor = getEvents("bcuk_book"); while (cursor.moveToNext()) { String temp_id = cursor.getString(0); final String temp_name = cursor.getString(1); String temp_author=cursor.getString(2); String temp_desc=cursor.getString(3); byte[] temp_image = cursor.getBlob(4); String temp_rating = cursor.getString(5); String temp_price = cursor.getString(6); String temp_update=cursor.getString(7); mapId.add(temp_id); mapName.add(temp_name); mapAuthor.add(temp_author); mapDesc.add(temp_desc); mapRating.add(temp_rating); mapPrice.add(temp_price); map.add(temp_image); mapUpdated.add(temp_update); Log.e("temp_id from the sqlite", temp_id); Log.i(temp_name, temp_name); Log.i(temp_desc, temp_desc); Log.i(temp_rating, temp_rating); Log.e(temp_update,temp_update); String[] captionArray = (String[]) mapName.toArray(new String[mapName.size()]); itemsAdapter = new ItemsAdapter( Bookicon.this, R.layout.item,captionArray); gridView=(GridView)findViewById(R.id.list); gridView.setAdapter(itemsAdapter); gridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Intent i = new Intent(getApplicationContext(), DetailsActivity.class); i.putExtra("id", position); startActivity(i); } }); } } 

Et la classe d'adaptateur de mes éléments est ::

  • Forcer le son de sortie au haut-parleur interne pendant que le casque est branché
  • Comment pouvons-nous utiliser onNewIntent () dans n'importe quelle activité?
  • Comment spécifier la taille de l'icône sur le marqueur dans Google Maps V2 Android
  • Un moyen de masquer le clavier logiciel fourni sans affecter les fonctionnalités de edittext dans Android
  • Comment télécharger des données de formulaire multipartite et une image sur un serveur dans Android?
  • Comment utiliser Android Spinner comme une liste déroulante
  •   private class ItemsAdapter extends BaseAdapter implements ListAdapter { String[] items; public ItemsAdapter(Context context,int textViewResourceId,String[] items) { this.items = items; } public View getView( int POSITION, View convertView,ViewGroup parent) { TextView cap = null ; View view = convertView; ImageView img = null; if (view == null) { LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.item, null); } img = (ImageView) view.findViewById(R.id.image); Log.i("iiiiii","iiiii"); cap = (TextView) view.findViewById(R.id.caption); System.err.println("Position of the book is "+mapName.get(POSITION)); bookTitle=mapName.get(POSITION); System.err.println("title of the book is "+bookTitle); cap.setText(mapName.get(POSITION)); img.setImageBitmap(BitmapFactory.decodeByteArray(map.get(POSITION), 0, map.get(POSITION).length)); return view; } public int getCount() { return items.length; } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } } 

    L'erreur lors de l'affichage est ::

      12-21 10:12:28.792: W/dalvikvm(741): threadid=1: thread exiting with uncaught exception (group=0x409c01f8) 12-21 10:12:28.842: E/AndroidRuntime(741): FATAL EXCEPTION: main 12-21 10:12:28.842: E/AndroidRuntime(741): java.lang.IndexOutOfBoundsException: Invalid index 56, size is 56 12-21 10:12:28.842: E/AndroidRuntime(741): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 12-21 10:12:28.842: E/AndroidRuntime(741): at java.util.ArrayList.get(ArrayList.java:304) 12-21 10:12:28.842: E/AndroidRuntime(741): at com.books.bcukbook.Bookicon$ItemsAdapter.getView(Bookicon.java:254) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.AbsListView.obtainView(AbsListView.java:2012) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.GridView.makeAndAddView(GridView.java:1323) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.GridView.makeRow(GridView.java:328) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.GridView.moveSelection(GridView.java:885) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.GridView.layoutChildren(GridView.java:1230) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.GridView.setSelectionInt(GridView.java:1476) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.GridView.arrowScroll(GridView.java:1729) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.GridView.commonKey(GridView.java:1543) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.widget.GridView.onKeyDown(GridView.java:1494) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.KeyEvent.dispatch(KeyEvent.java:2551) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.View.dispatchKeyEvent(View.java:5500) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1242) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246) 12-21 10:12:28.842: E/AndroidRuntime(741): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1879) 12-21 10:12:28.842: E/AndroidRuntime(741): at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1361) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.app.Activity.dispatchKeyEvent(Activity.java:2324) 12-21 10:12:28.842: E/AndroidRuntime(741): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1806) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3327) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3300) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2460) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.os.Handler.dispatchMessage(Handler.java:99) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.os.Looper.loop(Looper.java:137) 12-21 10:12:28.842: E/AndroidRuntime(741): at android.app.ActivityThread.main(ActivityThread.java:4424) 12-21 10:12:28.842: E/AndroidRuntime(741): at java.lang.reflect.Method.invokeNative(Native Method) 12-21 10:12:28.842: E/AndroidRuntime(741): at java.lang.reflect.Method.invoke(Method.java:511) 12-21 10:12:28.842: E/AndroidRuntime(741): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 12-21 10:12:28.842: E/AndroidRuntime(741): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-21 10:12:28.842: E/AndroidRuntime(741): at dalvik.system.NativeStart.main(Native Method) 

    Le résultat du code montre comme

  • Est-il possible de simuler une réception GCM à partir de la ligne de commande shell / am adb? Je reçois une erreur
  • Comment désactiver le clic sur ListView dans Android?
  • La mise en œuvre des autorisations de Marshmallow
  • Pourquoi deux paramètres pour le constructeur ComponentName?
  • Erreur de mémoire morte Lors du chargement de plus d'images dans Glide
  • Démarrer l'apk avec différents magasins de clés
  • One Solution collect form web for “Problème lors de l'affichage des noms d'éléments ainsi que des images stockées dans sqlite pour Android”

    Dans votre premier bloc de code, vous devez fermer la boucle while avant de configurer GridView comme code suivant:

      private void getDataAndPopulate() { //assuing that they are not null at this point.. mapId.clear(); mapName.clear(); mapAuthor.clear(); mapDesc.clear(); mapRating.clear(); mapPrice.clear(); map.clear(); mapUpdated.clear(); Cursor cursor = getEvents("bcuk_book"); while (cursor.moveToNext()) { String temp_id = cursor.getString(0); final String temp_name = cursor.getString(1); String temp_author=cursor.getString(2); String temp_desc=cursor.getString(3); byte[] temp_image = cursor.getBlob(4); String temp_rating = cursor.getString(5); String temp_price = cursor.getString(6); String temp_update=cursor.getString(7); mapId.add(temp_id); mapName.add(temp_name); mapAuthor.add(temp_author); mapDesc.add(temp_desc); mapRating.add(temp_rating); mapPrice.add(temp_price); map.add(temp_image); mapUpdated.add(temp_update); Log.e("temp_id from the sqlite", temp_id); Log.i(temp_name, temp_name); Log.i(temp_desc, temp_desc); Log.i(temp_rating, temp_rating); Log.e(temp_update,temp_update); }//this would close the while loop String[] captionArray = (String[]) mapName.toArray(new String[mapName.size()]); itemsAdapter = new ItemsAdapter( Bookicon.this, R.layout.item,captionArray); gridView=(GridView)findViewById(R.id.list); gridView.setAdapter(itemsAdapter); gridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Intent i = new Intent(getApplicationContext(), DetailsActivity.class); i.putExtra("id", position); startActivity(i); } }); } 

    Effacez également toute votre liste avant d'entrer dans la boucle while.

    En supposant que vous utilisez ArrayList j'ai mis à jour le code pour effacer les données de la liste avant d'entrer dans la boucle while.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.