studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android xml webview

para - manual de programacion android pdf



El contenido favorito no se muestra correctamente en la vista web (2)

Creo que el problema proviene de esta línea

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

donde creas un nuevo objeto ArrayList <string> cada vez pero deberías anexarlo? y obtenga el último, de lo contrario debería ponerlo en una variable

Si está comprobando si su tamaño ()> 0

Pero cada vez que creas un nuevo objeto que no se agrega a él

¡Tal vez yo estoy equivocado!

Estoy desarrollando una aplicación de diccionario de idiomas. Guardo la palabra favorita en Preferencia. El contenido favorito en el archivo XML se ve así:

<?xml version=''1.0'' encoding=''utf-8'' standalone=''yes'' ?> <map> <string name="history"> dict_name::160170::hi,dict_name::157140::he-man,dict_name::184774::jet,dict_name::34527::black </string> <string name="waitingTime"> 0 </string> <boolean name="saveFavourite" value="true" /> <string name="defaultDictionary"> dict_name </string> <string name="favourite"> dict_name::149271::go,dict_name::25481::back,dict_name::184774::jet </string> <boolean name="saveHistory" value="true" /> </map>

Uso el siguiente código para cargar el contenido favorito en la vista web:

public class User extends Activity { private static final String FAVOURITE_TAG = "[MyDict - FavouriteView] "; private static final String CONTENT_TAG = null; private ListView mLSTFavourite = null; private ArrayList<String> lstDict = null; private ArrayList<Integer> lstId = null; private ArrayList<String> mWordFavourite = null; private ArrayAdapter<String> 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)) { String strFavourite = prefs.getString("favourite", ""); Log.i(FAVOURITE_TAG, "Favourite loaded"); if (strFavourite != null && !strFavourite.equals("")) { mWordFavourite = new ArrayList<String>(Arrays.asList(strFavourite.split(","))); } else { mWordFavourite = new ArrayList<String>(); } } else { mWordFavourite = new ArrayList<String>(); } 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<String>(); lstId = new ArrayList<Integer>(); aptList = new ArrayAdapter<String>(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.putString("favourite", ""); editor.commit(); setResult(RESULT_OK); finish(); } }); btnBackToContent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setResult(RESULT_CANCELED); finish(); } }); } }

El contenido favorito se ha cargado correctamente. Las palabras favoritas se enumeran en la vista web. Pero el problema es que solo muestra la definición de la última palabra añadida al Favorito, independientemente de la palabra elegida. Por ejemplo:

word1 word2 word3

A pesar de que word1 y / o word2 se seleccionan por significado, siempre se muestra la definición de la última palabra, que es word3. Mi propósito es mostrar la definición de word1 cuando se selecciona word1 , y la definición de word2 cuando se selecciona word2 , y así sucesivamente. Guardo mis datos de diccionario en la base de datos SQLite.

¿Alguien puede ayudar a resolver este problema?