最喜欢的内容在webview上没有正确显示
我正在开发一个语言字典应用程序。 我将喜欢的单词保存到首选项中。 XML文件中的collections内容如下所示:
<?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>
我使用下面的代码来加载collections的内容到webview中:
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(); } }); } }
collections的内容已成功加载。 最喜欢的单词在webview中列出。 但问题是它只显示添加到collections夹的最新单词的定义,而不pipeselect什么单词。 例如:
word1 word2 word3
尽pipeword1和/或word2被select用于含义,最后一个单词(word3)的定义总是显示出来。 我的目的是在selectword1
时显示word1
的定义,当selectword2
时显示word2
的定义,等等。 我将我的字典数据保存在SQLite数据库中。
有没有人可以帮助解决这个问题。
我认为问题来自这一行
mWordFavourite = new ArrayList<String>(Arrays.asList(strFavourite.split(",")));
你每次创build一个新的ArrayList <string>
对象,但你应该追加它? &得到最后一个,否则你应该把它放在一个variables
如果你正在检查它的大小()> 0
但是每次你创build一个新的对象不附加到它
也许我错了!