Lieblingsinhalte werden in der Webansicht nicht richtig angezeigt

Lesezeit: 5 Minuten

Benutzer-Avatar
Niam Doyle

Ich entwickle eine Sprachwörterbuch-App. Ich speichere das Lieblingswort in Präferenz. Der Favoriteninhalt in der XML-Datei sieht wie folgt aus:

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

Ich verwende den folgenden Code, um den Favoriteninhalt in die Webansicht zu laden:

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();
            }
        });
    }
}

Der Favoriteninhalt wurde erfolgreich geladen. Die Lieblingswörter werden in der Webansicht aufgelistet. Das Problem ist jedoch, dass es nur die Definition des zuletzt zum Favoriten hinzugefügten Wortes anzeigt, unabhängig davon, welches Wort ausgewählt wird. Zum Beispiel:

word1
word2
word3

Obwohl Wort1 und/oder Wort2 für die Bedeutung ausgewählt sind, wird immer die Definition des letzten Wortes, also Wort3, angezeigt. Mein Zweck ist es, die Definition von anzuzeigen word1 Wenn word1 ausgewählt ist, und die Definition von word2 Wenn word2 ausgewählt ist, und so weiter und so weiter. Ich speichere meine Wörterbuchdaten in der SQLite-Datenbank.

Kann jemand dort helfen, dieses Problem zu lösen.

  • Ich habe den Code in Ihrer Frage ausprobiert und scheint den richtigen Wörterbuchnamen und die richtige Wort-ID aus Ihren Beispieldaten zurückzugeben, wenn einer davon in der Listenansicht ausgewählt wird. Sie erwähnen eine Webansicht und eine Datenbank, die vermutlich die Daten für das ausgewählte Wort erhalten und anzeigen, mehr Hilfe könnte gegeben werden, wenn einige Details dazu bereitgestellt würden.

    – StevieB

    6. März 2012 um 16:58 Uhr

  • welche Android-Version verwendest du hier? 2.3 hat Probleme mit Freigabeeinstellungen, ich bin selbst auf sie gestoßen, und das klingt nach einem bekannten Effekt.

    – Nebel

    26. September 2012 um 15:12 Uhr

  • Im Titel erwähnen Sie WebView, wo ist WebView in Ihrem Code???

    – Zeiger Null

    22. Oktober 2012 um 4:48 Uhr

  • So wie @StevieB bereits erwähnt hat; Es ist ein bisschen schwierig, genauere Hilfe zu geben, ohne den WebView-bezogenen Code zu sehen. Spontan fällt mir das WebView-Caching von Daten unter Umständen ein. Aber noch einmal: Ich müsste wirklich sehen, wie Sie den WebView-Teil implementieren, um detailliertere Hilfe geben zu können.

    – dbm

    25. Oktober 2012 um 6:56 Uhr

  • Was für eine verrückte Frage! 8 Monate nach der Tat wiederbelebt, immer noch ohne relevanten Code gepostet und irgendwie mit einer +74? Das ist weder gut recherchiert noch nützlicher als dieser Kommentar.

    – dokkaebi

    26. Oktober 2012 um 18:32 Uhr

Benutzer-Avatar
ucefkh

Ich denke, das Problem kommt von dieser Zeile

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

wo Sie eine neue ArrayList erstellen <string> Objekt jedes Mal, aber Sie sollten es anhängen? & Holen Sie sich das letzte, sonst sollten Sie es in eine Variable einfügen

Wenn Sie überprüfen, ob seine Größe () > 0 ist

Aber jedes Mal, wenn Sie ein neues Objekt erstellen, das nicht daran angehängt wird

Vielleicht liege ich falsch!

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

Weitere Informationen finden Sie unter dem obigen Link

  • Willkommen bei StackOverflow! Möchten Sie Ihrer Antwort einen Auszug des Artikels hinzufügen, damit sie für sich stehen kann?

    – SL Barth

    7. November 2012 um 6:56 Uhr


1302630cookie-checkLieblingsinhalte werden in der Webansicht nicht richtig angezeigt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy