Le contenu favori n’est pas affiché correctement sur la vue Web

Je développe une application de dictionnaire de langue. Je sauvegarde le mot préféré dans Preference. Le contenu favori du fichier XML ressemble à ceci:

   dict_name::160170::hi,dict_name::157140::he-man,dict_name::184774::jet,dict_name::34527::black   0    dict_name   dict_name::149271::go,dict_name::25481::back,dict_name::184774::jet    

J’utilise le code suivant pour charger le contenu favori dans la vue Web:

 public class User extends Activity { private static final Ssortingng FAVOURITE_TAG = "[MyDict - FavouriteView] "; private static final Ssortingng CONTENT_TAG = null; private ListView mLSTFavourite = null; private ArrayList lstDict = null; private ArrayList lstId = null; private ArrayList mWordFavourite = null; private ArrayAdapter aptList = null; private SharedPreferences prefs; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.favourite); prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); if (prefs.getBoolean("saveFavourite", true)) { Ssortingng strFavourite = prefs.getSsortingng("favourite", ""); Log.i(FAVOURITE_TAG, "Favourite loaded"); if (strFavourite != null && !strFavourite.equals("")) { mWordFavourite = new ArrayList(Arrays.asList(strFavourite.split(","))); } else { mWordFavourite = new ArrayList(); } } else { mWordFavourite = new ArrayList(); } Log.d(FAVOURITE_TAG, "mWordFavourite = " + mWordFavourite.size()); mLSTFavourite = (ListView) findViewById(R.id.lstFavourite); ImageButton btnClear = (ImageButton) findViewById(R.id.btnClear); ImageButton btnBackToContent = (ImageButton) findViewById(R.id.btnBackToContent); if (lstDict == null) { lstDict = new ArrayList(); lstId = new ArrayList(); aptList = new ArrayAdapter(getApplicationContext(), R.layout.customlist); } lstDict.clear(); lstId.clear(); aptList.clear(); if (mWordFavourite != null && mWordFavourite.size() > 0) { try { for (int i = 0; i < mWordFavourite.size(); i++) { Log.i(FAVOURITE_TAG, "item = " + mWordFavourite.get(i)); String arrPart[] = mWordFavourite.get(i).split("::"); if (arrPart.length == 3) { Log.i(CONTENT_TAG, "loaded content " + arrPart.length + ", wordId = " + arrPart[1]); // Log.i(CONTENT_TAG, "loaded 0"); lstDict.add(i, arrPart[0]); // Log.i(CONTENT_TAG, "loaded 1"); lstId.add(i, Integer.parseInt(arrPart[1])); // Log.i(CONTENT_TAG, "loaded 2"); aptList.add(arrPart[2]); } else { Log.i(FAVOURITE_TAG, "Wrong entry: " + mWordFavourite.get(i)); } } } catch (Exception ex) { Log.i(FAVOURITE_TAG, "Wrong entry found!"); } } // Log.i(CONTENT_TAG,"Adapter size = " + aptList.getCount()); // assign result return mLSTFavourite.setAdapter(aptList); mLSTFavourite.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView arg0, View v, int arg2, long arg3) { // mEDWord.setText(mAdapter.getItem(arg2)); Intent i = new Intent(); i.putExtra("dict", lstDict.get(arg2)); i.putExtra("wordId", lstId.get(arg2)); setResult(RESULT_OK, i); finish(); } }); btnClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mWordFavourite.clear(); aptList.clear(); mLSTFavourite.setAdapter(aptList); SharedPreferences.Editor editor = prefs.edit(); editor.putSsortingng("favourite", ""); editor.commit(); setResult(RESULT_OK); finish(); } }); btnBackToContent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setResult(RESULT_CANCELED); finish(); } }); } } 

Le contenu favori est chargé avec succès. Les mots favoris sont répertoriés dans la vue Web. Mais le problème est qu’il n’affiche que la définition du dernier mot ajouté au favori, quel que soit le mot choisi. Par exemple:

 word1 word2 word3 

Malgré la sélection de mot1 et / ou mot2, la définition du dernier mot, qui est mot3, est toujours affichée. Mon but est d’afficher la définition de word1 lorsque word1 est sélectionné et la définition de word2 lorsque word2 est sélectionné, et ainsi de suite. Je sauvegarde mes données de dictionnaire dans la firebase database SQLite.

Quelqu’un peut-il aider à résoudre ce problème.

Je pense que le problème vient de cette ligne

  mWordFavourite = new ArrayList(Arrays.asList(strFavourite.split(","))); 

où vous créez un nouvel object ArrayList chaque fois mais vous devez y append? & obtenir le dernier sinon vous devriez le mettre dans une variable

Si vous vérifiez si sa taille ()> 0

Mais chaque fois que vous créez un nouvel object qui ne s’y ajoute pas

Peut-être que je me trompe!

http://developer.android.com/reference/android/webkit/WebView.html

S’il vous plaît se référer au lien ci-dessus pour plus d’informations