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 ::

  • Existe-t-il un moyen d'obtenir un fragment du haut de la pile?
  • JQuery Mobile native select ne fonctionne pas sur droid
  • Quand devrais-tu utiliser Theme.AppCompat vs ThemeOverlay.AppCompat?
  • Comment tester la mise à niveau de la base de données sqlite avant de télécharger une nouvelle version de mon application sur Play Store dans Android
  • Différence entre JSONObject et JSONArray
  • EditText et TabHost ne se ressemblent pas
  •   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

  • Android. Comment jouer à la vidéo sur Surface (OpenGL)
  • Meilleure pratique lors de la mise en cache de fichiers dans Android
  • Rénover le fichier 2 vers le bas / télécharger
  • Charger l'image de contact en bitmap
  • Désactiver le bouton central dans MyLocation à Google Map API V2
  • Comptez les lignes de code dans toutes les classes java dans Android Studio
  • 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.