पसंदीदा सामग्री को वेबव्यू पर सही तरीके से नहीं दिखाया गया है


91

मैं एक भाषा शब्दकोश ऐप विकसित कर रहा हूं। मैं पसंदीदा शब्द को वरीयता में सहेजता हूं। XML फ़ाइल में पसंदीदा सामग्री निम्न की तरह दिखाई देती है:

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

वेब में पसंदीदा सामग्री लोड करने के लिए मैं निम्नलिखित कोड का उपयोग करता हूं:

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

पसंदीदा सामग्री सफलतापूर्वक भरी हुई है। पसंदीदा शब्द वेबव्यू में सूचीबद्ध हैं। लेकिन समस्या यह है कि यह पसंदीदा में जोड़े गए नवीनतम शब्द की परिभाषा को दर्शाता है, चाहे जो भी शब्द चुना गया हो। उदाहरण के लिए:

word1
word2
word3

वर्ड 1 और / या वर्ड 2 को अर्थ के लिए चुना गया है, अंतिम शब्द की परिभाषा, जो कि वर्ड 3 है, को हमेशा दिखाया जाता है। मेरा उद्देश्य यह है कि word1कब word1चयनित की परिभाषा प्रदर्शित की जाए , और word2कब word2चुनी जाए की परिभाषा , और इसी तरह आगे। मैं अपने शब्दकोश डेटा को SQLite डेटाबेस में सहेजता हूं।

क्या वहां कोई भी इस समस्या को हल करने में मदद कर सकता है।


18
मैंने आपके प्रश्न में कोड की कोशिश की और जहाँ तक यह जाता है कि यह आपके नमूना डेटा से सही शब्द का नाम और शब्द आईडी वापस करने लगता है जब उनमें से एक को सूची में चुना जाता है। आप एक वेबव्यू और एक डेटाबेस का उल्लेख करते हैं, जो संभवतः चयनित शब्द के लिए डेटा प्राप्त करते हैं और प्रदर्शित करते हैं, यदि इनमें से कुछ विवरण प्रदान किए गए तो अधिक मदद मिल सकती है।
स्टेवीबी

6
आप यहाँ Android के किस संस्करण का उपयोग कर रहे हैं? 2.3 के पास शेयरों के साथ समस्याएँ हैं Prefs, मैंने खुद उन्हें चलाया है, और यह परिचित प्रभाव जैसा लगता है।
नेबुला

5
शीर्षक में आपने webview का उल्लेख किया है, आपके कोड में WebView कहाँ है ???
पॉइंटर नल

2
जैसा कि @StevieB ने पहले ही उल्लेख किया है; WebView संबंधित कोड को देखे बिना अधिक सटीक सहायता देना थोड़ा कठिन है। इसके साथ ही मैं निश्चित परिस्थितियों में वेबव्यू कैशिंग डेटा के बारे में सोच सकता हूं। लेकिन फिर से: मुझे वास्तव में यह देखने की आवश्यकता होगी कि आप अधिक विस्तृत मदद देने में सक्षम होने के लिए वेबव्यू भाग को कैसे लागू करते हैं।
dbm

2
क्या सवाल है! इस तथ्य के 8 महीने बाद पुनर्जीवित, फिर भी संबंधित कोड के बिना, और किसी तरह +74 के साथ? यह अच्छी तरह से शोध नहीं है, और न ही इस टिप्पणी से अधिक उपयोगी है।
dokkaebi

जवाबों:


3

मुझे लगता है कि समस्या इस लाइन से आती है

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

जहाँ आप <string>हर बार एक नया ArrayList ऑब्जेक्ट बनाते हैं, लेकिन आपको इसे जोड़ना चाहिए? & अंतिम एक प्राप्त करें अन्यथा आपको इसे एक चर में रखना चाहिए

अगर आप इसकी साइज़ ()> 0 देख रहे हैं

लेकिन हर बार जब आप एक नई वस्तु बनाते हैं, तो उसमें संलग्न नहीं होते

शायद मैं गलत हूँ!


2

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

कृपया अधिक जानकारी के लिए उपरोक्त लिंक देखें


StackOverflow में आपका स्वागत है! क्या आप अपने उत्तर में लेख का एक अंश जोड़ना चाहते हैं, ताकि वह स्वयं पर खड़ा हो सके?
एसएल बर्थ - मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.