ভাগ করা পছন্দগুলিতে অ্যারেলিস্ট সংরক্ষণ করুন


317

আমার কাছে ArrayListকাস্টম অবজেক্টস রয়েছে। প্রতিটি কাস্টম অবজেক্টে স্ট্রিং এবং সংখ্যা বিভিন্ন থাকে। ব্যবহারকারী যদি ক্রিয়াকলাপটি ছেড়ে দেয় এবং পরে কোনও সময় ফিরে আসতে চায় তবে আমার কাছে অ্যারেটি আটকাতে হবে, তবে অ্যাপ্লিকেশন পুরোপুরি বন্ধ হয়ে যাওয়ার পরে আমার অ্যারে উপলভ্য হওয়ার দরকার নেই। আমি এটি ব্যবহার করে আরও অনেকগুলি অবজেক্ট SharedPreferencesসংরক্ষণ করি তবে কীভাবে আমার সম্পূর্ণ অ্যারেটি সংরক্ষণ করা যায় তা আমি বুঝতে পারি না। এটা কি সম্ভব? হয়তো SharedPreferencesএই সম্পর্কে যেতে উপায় নয়? একটি সহজ পদ্ধতি আছে?


: আপনি এখানে উত্তর খুঁজে পেতে পারেন stackoverflow.com/questions/14981233/...
Apurva Kolapkar

এই URL মাধ্যমে সম্পূর্ণ উদাহরণস্বরূপ চলতে চলতে হয় stackoverflow.com/a/41137562/4344659
সঞ্জীব Sangral

যদি কেউ সমাধানের সন্ধান করে তবে এটি উত্তর হতে পারে যা আপনি কোটলিনে সম্পূর্ণ ব্যবহারের উদাহরণ সহ সন্ধান করছেন। stackoverflow.com/a/56873719/3710341
সাগর চাঁপাগেইন

উত্তর:


431

এপিআই 11 এর পরে SharedPreferences Editorগ্রহণ করুন Sets। আপনি আপনার তালিকাটিকে একটি HashSetবা অনুরূপ কিছুতে রূপান্তর করতে এবং এটির মতো সঞ্চয় করতে পারেন। আপনি যখন এটি আবার পড়েন, এটিকে একটিতে রূপান্তর করুন ArrayList, প্রয়োজনে এটিকে বাছাই করুন এবং আপনি যেতে ভাল।

//Retrieve the values
Set<String> set = myScores.getStringSet("key", null);

//Set the values
Set<String> set = new HashSet<String>();
set.addAll(listOfExistingScores);
scoreEditor.putStringSet("key", set);
scoreEditor.commit();

আপনি নিজের সিরিয়ালাইজ করতে পারেন ArrayListএবং তারপরে / এটিকে সংরক্ষণ / পড়তে পারেন SharedPreferences। নীচে সমাধানটি দেওয়া হল:

সম্পাদনা:
ঠিক আছে, নীচে ArrayListসিরিয়ালযুক্ত অবজেক্ট হিসাবে সংরক্ষণ করার জন্য সমাধানটি দেওয়া হয়েছে SharedPreferencesএবং তারপরে এটি ভাগ করা পছন্দসমূহ থেকে পড়ুন।

যেহেতু API কেবলমাত্র SharedPreferences (এপিআই 11 এর পরে এর সহজ) এর থেকে স্ট্রিংগুলি সংরক্ষণ এবং পুনরুদ্ধারকে সমর্থন করে, তাই আমাদের অ্যারেলিস্ট অবজেক্টটি ক্রমিকায়িত এবং ডি-সিরিয়ালাইজ করতে হবে যার কাজগুলিতে স্ট্রিংয়ের তালিকা রয়েছে।

ইন addTask()TaskManagerApplication ক্লাসের পদ্ধতি, আমরা ভাগ পছন্দের উদাহরণস্বরূপ পেতে এবং তারপর ব্যবহার ধারাবাহিকভাবে ArrayList সঞ্চয় করতে আছে putString()পদ্ধতি:

public void addTask(Task t) {
  if (null == currentTasks) {
    currentTasks = new ArrayList<task>();
  }
  currentTasks.add(t);

  // save the task list to preference
  SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
  Editor editor = prefs.edit();
  try {
    editor.putString(TASKS, ObjectSerializer.serialize(currentTasks));
  } catch (IOException e) {
    e.printStackTrace();
  }
  editor.commit();
}

একইভাবে onCreate()পদ্ধতির পছন্দ থেকে আমাদের কার্যগুলির তালিকাটি পুনরুদ্ধার করতে হবে :

public void onCreate() {
  super.onCreate();
  if (null == currentTasks) {
    currentTasks = new ArrayList<task>();
  }

  // load tasks from preference
  SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);

  try {
    currentTasks = (ArrayList<task>) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<task>())));
  } catch (IOException e) {
    e.printStackTrace();
  } catch (ClassNotFoundException e) {
    e.printStackTrace();
  }
}

আপনি ObjectSerializerঅ্যাপাচি পিগ প্রকল্প অবজেক্টসিরাইজার.জভা থেকে ক্লাস পেতে পারেন


21
মনে রাখবেন যে putStringSetএপিআই ১১-এ যুক্ত হয়েছিল বেশিরভাগ বর্তমান প্রোগ্রামাররা ইজারা এপিআই 8 (ফ্রয়েও) তে লক্ষ্য রাখে।
ক্রিশ্চিয়ান

2
আমি এই পদ্ধতির ধারণাটি পছন্দ করি কারণ এটিটি সবচেয়ে পরিষ্কার বলে মনে হচ্ছে তবে আমি যে অ্যারেটি সংরক্ষণ করতে চাইছি এটি একটি কাস্টম শ্রেণীর অবজেক্ট যা স্ট্রিংস, ডাবলস এবং বুলিয়ান রয়েছে। আমি এই ধরণের 3 টি ধরণের সেটগুলিতে কীভাবে যুক্ত করব? আমি কি প্রতিটি পৃথক বস্তুকে তাদের নিজস্ব অ্যারেতে সেট করতে হবে এবং তারপরে পৃথক পৃথক সেটগুলিতে সঞ্চয় করার আগে সেগুলি পৃথকভাবে যুক্ত করতে হবে, বা আরও সহজ উপায় আছে?
ryandlf


2
অক্টোবর -2016 এর পরে পাঠকদের কাছে: এই মন্তব্যটি ইতিমধ্যে প্রচুর উত্সাহ পেয়েছে এবং আপনি এটি আমার মতো ব্যবহার করতে পারেন তবে দয়া করে থামুন এবং এটি করবেন না। হ্যাশসেট সদৃশ মানটি বাতিল করবে, সুতরাং আপনার অ্যারেলিস্ট একই হবে না। বিশদগুলি
সিওল

2
এই উত্তরটি জুড়ে আসা লোকদের একটি অনুস্মারক হিসাবে: একটি সেট অর্ডারড নয়, সুতরাং স্ট্রিংসেট সংরক্ষণ করা আপনার অ্যারেলিস্টের সাথে আপনার অর্ডারটি হারাবে।
ডেভিড লিউ

119

এই বস্তুটি ব্যবহার করে -> টিনিডিবি - অ্যান্ড্রয়েড-ভাগ করা-পছন্দসমূহ-টার্বো এটি খুব সহজ।

TinyDB tinydb = new TinyDB(context);

করা

tinydb.putList("MyUsers", mUsersArray);

পেতে

tinydb.getList("MyUsers");

হালনাগাদ

কিছু দরকারী উদাহরণ এবং সমস্যা সমাধান এখানে পাওয়া যেতে পারে: অ্যান্ড্রয়েড অংশীদারি পছন্দ TinyDB putListObject ফল


6
এটি সেরা পন্থা। আমার পক্ষ থেকে +1
শ্রীতম জগদেব

3
আমিও. চরম উপকারী !!
জুয়ান আগুইলার গুইসাদো

1
আপনার তালিকার বিষয়বস্তুর উপর নির্ভর করে, tinydb.putList()লিঙ্কযুক্ত পৃষ্ঠার উদাহরণগুলিতে নজর রাখার সময় আপনাকে আপনার তালিকার অবজেক্টের ধরণটি নির্দিষ্ট করতে হবে ।
কেসি ওচিবিলি

ভাল কাজ, কিন্তু আমার উল্লেখ করা উচিত যে কখনও কখনও এই লাইব্রেরিতে জিনিসগুলি সংরক্ষণ করার সময় সমস্যা হয়। আরও সুনির্দিষ্ট হওয়ার জন্য, এটি স্ট্যাক ওভারফ্লো ব্যতিক্রম ছুঁড়ে ফেলতে পারে। এবং আমি মনে করি এটি কারণ এটি কীভাবে বস্তুটি সংরক্ষণ করবেন তা নির্ধারণ করার জন্য প্রতিবিম্ব ব্যবহার করে এবং যদি বস্তুটি খুব জটিল হয়ে যায় তবে এটি ব্যতিক্রম নষ্ট করতে পারে।
মিঃ কিউ

1
তোমাকে অনেক ভালোবাসি!
মাইকেমিক্লো

93

এতে সংরক্ষণ Arrayকরা SharedPreferences:

public static boolean saveArray()
{
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor mEdit1 = sp.edit();
    /* sKey is an array */
    mEdit1.putInt("Status_size", sKey.size());  

    for(int i=0;i<sKey.size();i++)  
    {
        mEdit1.remove("Status_" + i);
        mEdit1.putString("Status_" + i, sKey.get(i));  
    }

    return mEdit1.commit();     
}

Arrayথেকে ডেটা লোড হচ্ছেSharedPreferences

public static void loadArray(Context mContext)
{  
    SharedPreferences mSharedPreference1 =   PreferenceManager.getDefaultSharedPreferences(mContext);
    sKey.clear();
    int size = mSharedPreference1.getInt("Status_size", 0);  

    for(int i=0;i<size;i++) 
    {
     sKey.add(mSharedPreference1.getString("Status_" + i, null));
    }

}

14
এটি খুব সুন্দর একটি "হ্যাক"। সচেতন থাকুন যে এই পদ্ধতির সাথে সর্বদা অব্যবহৃত পুরানো মানগুলির সাথে শর্টপ্রিফারেন্সগুলি স্ফূরণ করার সম্ভাবনা রয়েছে। উদাহরণস্বরূপ একটি তালিকায় একটি রানে 100 টি আকার এবং তার পরে 50 এর আকার থাকতে পারে The 50 টি পুরানো এন্ট্রি পছন্দগুলিতে থাকবে remain একটি উপায় হ'ল একটি ম্যাক্স মান নির্ধারণ করা এবং এটি পর্যন্ত যে কোনও কিছু সাফ করা।
ইরাক্লিস

3
@Iraklis নিশ্চয় কিন্তু অভিমানী আপনি শুধুমাত্র এটিকে সংরক্ষণ ArrayListমধ্যে SharedPrefenecesআপনি ব্যবহার করতে পারে mEdit1.clear()এই এড়ানো।
অ্যালেক্সএন্ড্রো

1
আমি এই "হ্যাক" পছন্দ করি। তবে এমইডিট 1.সিলেয়ার () এই উদ্দেশ্যে প্রাসঙ্গিক নয় এমন অন্যান্য মান মুছে দেবে?
বাগসফ্লায়ার

1
ধন্যবাদ! আপনি যদি আমাকে জিজ্ঞাসা করতে আপত্তি করেন তবে .reove ()? পছন্দটি কি কেবল ওভাররাইট করা হবে না?
স্ক্রিপ্ট কিটি

62

আপনি এটিকে রূপান্তর করতে পারেন JSON Stringএবং স্ট্রিংটি স্টোরেজ করতে পারেন SharedPreferences


আমি অ্যারেলিস্টগুলিকে জেএসোনআরেজে রূপান্তর করার জন্য একটি টন কোড খুঁজে পাচ্ছি, তবে কী কী কী নমুনা আপনি JSONString এ রূপান্তর করতে পারেন তাতে ভাগ করে নিতে ইচ্ছুক যাতে আমি এটিকে SharedPrefs এ সঞ্চয় করতে পারি?
ryandlf

5
ব্যবহার toString ()
MByD

3
তবে তারপরে আমি কীভাবে এটিকে ভাগ করে নেওয়া উচিত এবং এটিকে আবার অ্যারেলিস্টে রূপান্তর করব?
ryandlf

আমি দুঃখিত, এটি এখন পরীক্ষা করার জন্য আমার কাছে অ্যান্ড্রয়েড এসডিকে নেই, তবে এখানে একবার দেখুন: benjii.me/2010/04/deserializing-json-in-android-using-gson । আপনার জাসন অ্যারেতে পুনরাবৃত্তি হওয়া উচিত এবং প্রতিটি বস্তুর জন্য তারা সেখানে যা করেন তা করা উচিত, আশা করি আমি আগামীকাল একটি সম্পূর্ণ উদাহরণ দিয়ে আমার উত্তরে একটি সম্পাদনা পোস্ট করতে সক্ষম হব।
এমবিআইডি

53

@ নীরভ যেমন বলেছিলেন, সেরা সমাধান হ'ল এটি জিসন পাঠ্য হিসাবে জিসন ইউটিলিটি ক্লাস ব্যবহার করে ভাগ করে নেওয়া প্রিফারেন্সগুলিতে সঞ্চয় করা। নমুনা কোডের নীচে:

//Retrieve the values
Gson gson = new Gson();
String jsonText = Prefs.getString("key", null);
String[] text = gson.fromJson(jsonText, String[].class);  //EDIT: gso to gson


//Set the values
Gson gson = new Gson();
List<String> textList = new ArrayList<String>();
textList.addAll(data);
String jsonText = gson.toJson(textList);
prefsEditor.putString("key", jsonText);
prefsEditor.apply();

2
Godশ্বরের ধন্যবাদ, তিনি জীবন রক্ষাকারী ছিলেন। সত্যিই খুব সহজ।
পার্থিবান এম

2
এই উত্তর জোরে জোরে হতে হবে। চমত্কার! আমি এইভাবে জিসন ব্যবহার করতে পারি তার কোনও ধারণা ছিল না। অ্যারের স্বরলিপিটি প্রথমবারের মতো দেখতেও এইভাবে ব্যবহৃত হয়েছিল। ধন্যবাদ!
madu

3
এটিকে আবার তালিকায় রূপান্তর করতে <স্ট্রিং> টেক্সটলিস্ট = অ্যারে.এএসলিস্ট (gson.fromJson (jsonText, স্ট্রিং []। শ্রেণি)) তালিকা করুন;
বামসি চাল্লা

22

আরে বন্ধুরা আমি Gsonলাইব্রেরি ব্যবহার না করে উপরের সমস্যার সমাধান পেয়েছি । এখানে আমি উত্স কোড পোস্ট।

1. পরিবর্তনশীল ঘোষণা অর্থাত্

  SharedPreferences shared;
  ArrayList<String> arrPackage;

2. পরিবর্তনশীল সূচনা অর্থাত্

 shared = getSharedPreferences("App_settings", MODE_PRIVATE);
 // add values for your ArrayList any where...
 arrPackage = new ArrayList<>();

শেয়ারড প্রেফারেন্সির ব্যবহার করে স্টোর মান packagesharedPreferences():

 private void packagesharedPreferences() {
   SharedPreferences.Editor editor = shared.edit();
   Set<String> set = new HashSet<String>();
   set.addAll(arrPackage);
   editor.putStringSet("DATE_LIST", set);
   editor.apply();
   Log.d("storesharedPreferences",""+set);
 }

4. শেয়ার্ডপ্রিফারেন্সের ব্যবহারের পুনঃপ্রচার মূল্য retriveSharedValue():

 private void retriveSharedValue() {
   Set<String> set = shared.getStringSet("DATE_LIST", null);
   arrPackage.addAll(set);
   Log.d("retrivesharedPreferences",""+set);
 }

আমি আশা করি এটি আপনার পক্ষে সহায়ক হবে ...


দুর্দান্ত সমাধান! সহজ এবং দ্রুত!
লাভঅ্যান্ড্রয়েড

5
এটি আপনাকে কোনও সেটটিতে যুক্ত করার সাথে সাথে তালিকা থেকে সমস্ত নকল স্ট্রিং সরিয়ে ফেলবে। সম্ভবত একটি ওয়ান্টেড বৈশিষ্ট্য নয়
ওয়ানক্রিষ্টের

এটি কি কেবলমাত্র একটি তালিকার জন্য String?
কুলমাইন্ড

আপনি এইভাবে অর্ডার হারাবেন
ব্রায়ান রেইনহোল্ড

16
/**
 *     Save and get ArrayList in SharedPreference
 */

জাভা:

public void saveArrayList(ArrayList<String> list, String key){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
    SharedPreferences.Editor editor = prefs.edit();
    Gson gson = new Gson();
    String json = gson.toJson(list);
    editor.putString(key, json);
    editor.apply();    

}

public ArrayList<String> getArrayList(String key){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
    Gson gson = new Gson();
    String json = prefs.getString(key, null);
    Type type = new TypeToken<ArrayList<String>>() {}.getType();
    return gson.fromJson(json, type);
}

Kotlin

fun saveArrayList(list: java.util.ArrayList<String?>?, key: String?) {
    val prefs: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity)
    val editor: Editor = prefs.edit()
    val gson = Gson()
    val json: String = gson.toJson(list)
    editor.putString(key, json)
    editor.apply()
}

fun getArrayList(key: String?): java.util.ArrayList<String?>? {
    val prefs: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity)
    val gson = Gson()
    val json: String = prefs.getString(key, null)
    val type: Type = object : TypeToken<java.util.ArrayList<String?>?>() {}.getType()
    return gson.fromJson(json, type)
}

1
হ্যাঁ, সেরা উত্তর
অ্যালেক্সপ্যাড

এটি সেরা উত্তর, আমি অন্যান্য
বিষয়গুলিও

আপনি কি এটি তৈরি করতে পারবেন তার অর্থ এটি সমস্ত মডেল শ্রেণি সঞ্চয় করবে?
ব্ল্যাকব্লাইন্ড

13

অ্যান্ড্রয়েড SharedPreferances আপনাকে xML ফাইল হিসাবে মেমরিতে আদিম ধরণের (বুলিয়ান, ফ্লোট, ইন্ট, লং, স্ট্রিং এবং স্ট্রিংসেট যা এপিআই 11 এর পরে উপলব্ধ) সংরক্ষণ করতে দেয়।

যে কোনও সমাধানের মূল ধারণাটি হ'ল ডেটাগুলিকে সেই আদিম ধরণের একটিতে রূপান্তর করা।

আমি ব্যক্তিগতভাবে আমার তালিকাটিকে জসন ফর্ম্যাটে রূপান্তর করতে পছন্দ করি এবং তারপরে এটিকে একটি ভাগ করে নেওয়া পছন্দ হিসাবে মান হিসাবে স্ট্রিং হিসাবে সংরক্ষণ করি।

আমার সমাধানটি ব্যবহার করার জন্য আপনাকে গুগল জিসন যুক্ত করতে হবে

গ্রেডে কেবলমাত্র নিম্নলিখিত নির্ভরতা যুক্ত করুন (দয়া করে গুগলের সর্বশেষ সংস্করণটি ব্যবহার করুন):

compile 'com.google.code.gson:gson:2.6.2'

ডেটা সংরক্ষণ করুন (যেখানে এইচটিপিপিরাম আপনার অবজেক্ট):

List<HttpParam> httpParamList = "**get your list**"
String httpParamJSONList = new Gson().toJson(httpParamList);

SharedPreferences prefs = getSharedPreferences(**"your_prefes_key"**, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(**"your_prefes_key"**, httpParamJSONList);

editor.apply();

ডেটা পুনরুদ্ধার করুন (যেখানে এইচটিপিপিরাম আপনার অবজেক্ট):

SharedPreferences prefs = getSharedPreferences(**"your_prefes_key"**, Context.MODE_PRIVATE);
String httpParamJSONList = prefs.getString(**"your_prefes_key"**, ""); 

List<HttpParam> httpParamList =  
new Gson().fromJson(httpParamJSONList, new TypeToken<List<HttpParam>>() {
            }.getType());

ধন্যবাদ। এই উত্তরটি আমাকে আমার তালিকা <মাইবজেক্ট> পুনরুদ্ধার এবং সংরক্ষণ করতে সহায়তা করেছে।
ভিস্রাণে

ধন্যবাদ। ভাল কাজ করছেন
ভেলাউথাম এম

11

এটি আপনার নিখুঁত সমাধান .. চেষ্টা করে দেখুন,

public void saveArrayList(ArrayList<String> list, String key){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
    SharedPreferences.Editor editor = prefs.edit();
    Gson gson = new Gson();
    String json = gson.toJson(list);
    editor.putString(key, json);
    editor.apply();     // This line is IMPORTANT !!!
}

public ArrayList<String> getArrayList(String key){
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
    Gson gson = new Gson();
    String json = prefs.getString(key, null);
    Type type = new TypeToken<ArrayList<String>>() {}.getType();
    return gson.fromJson(json, type);
}

9

আপনি অ্যারেলিস্টটিকে স্ট্রিংয়ে রূপান্তর করতে পারেন এবং পছন্দটিকে সেভ করতে পারেন

private String convertToString(ArrayList<String> list) {

            StringBuilder sb = new StringBuilder();
            String delim = "";
            for (String s : list)
            {
                sb.append(delim);
                sb.append(s);;
                delim = ",";
            }
            return sb.toString();
        }

private ArrayList<String> convertToArray(String string) {

            ArrayList<String> list = new ArrayList<String>(Arrays.asList(string.split(",")));
            return list;
        }

convertToStringপদ্ধতি ব্যবহার করে স্ট্রিংয়ে রূপান্তর করার পরে আপনি অ্যারেলিস্টটি সংরক্ষণ করতে পারেন এবং স্ট্রিংটি পুনরুদ্ধার করতে পারেন এবং এটি ব্যবহার করে অ্যারেতে রূপান্তর করতে পারেনconvertToArray

এপিআই 11 এর পরে আপনি সরাসরি ভাগ করা পছন্দগুলিতে সেট সংরক্ষণ করতে পারেন যদিও !!! :)


6

স্ট্রিং, ইনট, বুলিয়ানের জন্য সেরা পছন্দটি শেয়ারড প্রিফারেন্স হবে।

আপনি যদি অ্যারেলিস্ট বা কোনও জটিল ডেটা সঞ্চয় করতে চান। সেরা পছন্দ পেপার লাইব্রেরি হবে।

নির্ভরতা যুক্ত করুন

implementation 'io.paperdb:paperdb:2.6'

কাগজ সূচনা

অ্যাপ্লিকেশন.অনক্রিয়েট () এ একবার শুরু করা উচিত:

Paper.init(context);

সংরক্ষণ

List<Person> contacts = ...
Paper.book().write("contacts", contacts);

তথ্য প্রস্তুত হচ্ছে

স্টোরেজে অবজেক্টটি উপস্থিত না থাকলে ডিফল্ট মানগুলি ব্যবহার করুন।

List<Person> contacts = Paper.book().read("contacts", new ArrayList<>());

আপনি এখানে যান।

https://github.com/pilgr/Paper


5

আমি উপরের সমস্ত উত্তর পড়েছি। এটি সমস্ত সঠিক তবে নীচের মতো আরও সহজ সমাধান আমি পেয়েছি:

  1. স্ট্রিং লিস্ট শেয়ার করা পছন্দগুলিতে সংরক্ষণ করা হচ্ছে >>

    public static void setSharedPreferenceStringList(Context pContext, String pKey, List<String> pData) {
    SharedPreferences.Editor editor = pContext.getSharedPreferences(Constants.APP_PREFS, Activity.MODE_PRIVATE).edit();
    editor.putInt(pKey + "size", pData.size());
    editor.commit();
    
    for (int i = 0; i < pData.size(); i++) {
        SharedPreferences.Editor editor1 = pContext.getSharedPreferences(Constants.APP_PREFS, Activity.MODE_PRIVATE).edit();
        editor1.putString(pKey + i, (pData.get(i)));
        editor1.commit();
    }

    }

  2. এবং ভাগ করা পছন্দ থেকে স্ট্রিং তালিকা পেতে >>

    public static List<String> getSharedPreferenceStringList(Context pContext, String pKey) {
    int size = pContext.getSharedPreferences(Constants.APP_PREFS, Activity.MODE_PRIVATE).getInt(pKey + "size", 0);
    List<String> list = new ArrayList<>();
    for (int i = 0; i < size; i++) {
        list.add(pContext.getSharedPreferences(Constants.APP_PREFS, Activity.MODE_PRIVATE).getString(pKey + i, ""));
    }
    return list;
    }

Constants.APP_PREFSখোলার জন্য ফাইলটির নাম এখানে ; পাথ বিভাজক থাকতে পারে না।


5

কোটলিনের সাথেও:

fun SharedPreferences.Editor.putIntegerArrayList(key: String, list: ArrayList<Int>?): SharedPreferences.Editor {
    putString(key, list?.joinToString(",") ?: "")
    return this
}

fun SharedPreferences.getIntegerArrayList(key: String, defValue: ArrayList<Int>?): ArrayList<Int>? {
    val value = getString(key, null)
    if (value.isNullOrBlank())
        return defValue
    return ArrayList (value.split(",").map { it.toInt() }) 
}

4

সেরা উপায় হ'ল জিএসওএন ব্যবহার করে জেএসএন স্ট্রিংয়ে রূপান্তর করুন এবং এই স্ট্রিংটিকে শেরেডপ্রেফারেন্সে সংরক্ষণ করুন। আমি প্রতিক্রিয়াগুলি ক্যাশে করতেও এইভাবে ব্যবহার করি।


4

আপনি গসন লাইব্রেরি ব্যবহার করে স্ট্রিং এবং কাস্টম অ্যারে তালিকা সংরক্ষণ করতে পারেন।

=> প্রথমে আপনাকে SharedPreferences এ অ্যারে তালিকা সংরক্ষণ করতে ফাংশন তৈরি করতে হবে।

public void saveListInLocal(ArrayList<String> list, String key) {

        SharedPreferences prefs = getSharedPreferences("AppName", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs.edit();
        Gson gson = new Gson();
        String json = gson.toJson(list);
        editor.putString(key, json);
        editor.apply();     // This line is IMPORTANT !!!

    }

=> SharedPreferences থেকে অ্যারে তালিকা পেতে আপনাকে ফাংশন তৈরি করতে হবে।

public ArrayList<String> getListFromLocal(String key)
{
    SharedPreferences prefs = getSharedPreferences("AppName", Context.MODE_PRIVATE);
    Gson gson = new Gson();
    String json = prefs.getString(key, null);
    Type type = new TypeToken<ArrayList<String>>() {}.getType();
    return gson.fromJson(json, type);

}

=> অ্যারে তালিকা ফাংশনটি কীভাবে সংরক্ষণ এবং পুনরুদ্ধার করতে হবে।

ArrayList<String> listSave=new ArrayList<>();
listSave.add("test1"));
listSave.add("test2"));
saveListInLocal(listSave,"key");
Log.e("saveArrayList:","Save ArrayList success");
ArrayList<String> listGet=new ArrayList<>();
listGet=getListFromLocal("key");
Log.e("getArrayList:","Get ArrayList size"+listGet.size());

=> আপনার অ্যাপ স্তরের বিল্ড।

বাস্তবায়ন 'com.google.code.gson: gson: 2.8.2'


3

আপনি ফেসবুকএসডিএকের SharedPreferencesTokenCache ক্লাস থেকে সিরিয়ালাইজকে () এবং deserializeKey () ফাংশনগুলি উল্লেখ করতে পারেন। এটি সমর্থিত টাইপটিকে JSON অবজেক্টে রূপান্তর করে এবং JSON স্ট্রিংটিকে SharedPreferences এ সংরক্ষণ করে । আপনি এখান থেকে এসডিকে ডাউনলোড করতে পারেন

private void serializeKey(String key, Bundle bundle, SharedPreferences.Editor editor)
    throws JSONException {
    Object value = bundle.get(key);
    if (value == null) {
        // Cannot serialize null values.
        return;
    }

    String supportedType = null;
    JSONArray jsonArray = null;
    JSONObject json = new JSONObject();

    if (value instanceof Byte) {
        supportedType = TYPE_BYTE;
        json.put(JSON_VALUE, ((Byte)value).intValue());
    } else if (value instanceof Short) {
        supportedType = TYPE_SHORT;
        json.put(JSON_VALUE, ((Short)value).intValue());
    } else if (value instanceof Integer) {
        supportedType = TYPE_INTEGER;
        json.put(JSON_VALUE, ((Integer)value).intValue());
    } else if (value instanceof Long) {
        supportedType = TYPE_LONG;
        json.put(JSON_VALUE, ((Long)value).longValue());
    } else if (value instanceof Float) {
        supportedType = TYPE_FLOAT;
        json.put(JSON_VALUE, ((Float)value).doubleValue());
    } else if (value instanceof Double) {
        supportedType = TYPE_DOUBLE;
        json.put(JSON_VALUE, ((Double)value).doubleValue());
    } else if (value instanceof Boolean) {
        supportedType = TYPE_BOOLEAN;
        json.put(JSON_VALUE, ((Boolean)value).booleanValue());
    } else if (value instanceof Character) {
        supportedType = TYPE_CHAR;
        json.put(JSON_VALUE, value.toString());
    } else if (value instanceof String) {
        supportedType = TYPE_STRING;
        json.put(JSON_VALUE, (String)value);
    } else {
        // Optimistically create a JSONArray. If not an array type, we can null
        // it out later
        jsonArray = new JSONArray();
        if (value instanceof byte[]) {
            supportedType = TYPE_BYTE_ARRAY;
            for (byte v : (byte[])value) {
                jsonArray.put((int)v);
            }
        } else if (value instanceof short[]) {
            supportedType = TYPE_SHORT_ARRAY;
            for (short v : (short[])value) {
                jsonArray.put((int)v);
            }
        } else if (value instanceof int[]) {
            supportedType = TYPE_INTEGER_ARRAY;
            for (int v : (int[])value) {
                jsonArray.put(v);
            }
        } else if (value instanceof long[]) {
            supportedType = TYPE_LONG_ARRAY;
            for (long v : (long[])value) {
                jsonArray.put(v);
            }
        } else if (value instanceof float[]) {
            supportedType = TYPE_FLOAT_ARRAY;
            for (float v : (float[])value) {
                jsonArray.put((double)v);
            }
        } else if (value instanceof double[]) {
            supportedType = TYPE_DOUBLE_ARRAY;
            for (double v : (double[])value) {
                jsonArray.put(v);
            }
        } else if (value instanceof boolean[]) {
            supportedType = TYPE_BOOLEAN_ARRAY;
            for (boolean v : (boolean[])value) {
                jsonArray.put(v);
            }
        } else if (value instanceof char[]) {
            supportedType = TYPE_CHAR_ARRAY;
            for (char v : (char[])value) {
                jsonArray.put(String.valueOf(v));
            }
        } else if (value instanceof List<?>) {
            supportedType = TYPE_STRING_LIST;
            @SuppressWarnings("unchecked")
            List<String> stringList = (List<String>)value;
            for (String v : stringList) {
                jsonArray.put((v == null) ? JSONObject.NULL : v);
            }
        } else {
            // Unsupported type. Clear out the array as a precaution even though
            // it is redundant with the null supportedType.
            jsonArray = null;
        }
    }

    if (supportedType != null) {
        json.put(JSON_VALUE_TYPE, supportedType);
        if (jsonArray != null) {
            // If we have an array, it has already been converted to JSON. So use
            // that instead.
            json.putOpt(JSON_VALUE, jsonArray);
        }

        String jsonString = json.toString();
        editor.putString(key, jsonString);
    }
}

private void deserializeKey(String key, Bundle bundle)
        throws JSONException {
    String jsonString = cache.getString(key, "{}");
    JSONObject json = new JSONObject(jsonString);

    String valueType = json.getString(JSON_VALUE_TYPE);

    if (valueType.equals(TYPE_BOOLEAN)) {
        bundle.putBoolean(key, json.getBoolean(JSON_VALUE));
    } else if (valueType.equals(TYPE_BOOLEAN_ARRAY)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        boolean[] array = new boolean[jsonArray.length()];
        for (int i = 0; i < array.length; i++) {
            array[i] = jsonArray.getBoolean(i);
        }
        bundle.putBooleanArray(key, array);
    } else if (valueType.equals(TYPE_BYTE)) {
        bundle.putByte(key, (byte)json.getInt(JSON_VALUE));
    } else if (valueType.equals(TYPE_BYTE_ARRAY)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        byte[] array = new byte[jsonArray.length()];
        for (int i = 0; i < array.length; i++) {
            array[i] = (byte)jsonArray.getInt(i);
        }
        bundle.putByteArray(key, array);
    } else if (valueType.equals(TYPE_SHORT)) {
        bundle.putShort(key, (short)json.getInt(JSON_VALUE));
    } else if (valueType.equals(TYPE_SHORT_ARRAY)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        short[] array = new short[jsonArray.length()];
        for (int i = 0; i < array.length; i++) {
            array[i] = (short)jsonArray.getInt(i);
        }
        bundle.putShortArray(key, array);
    } else if (valueType.equals(TYPE_INTEGER)) {
        bundle.putInt(key, json.getInt(JSON_VALUE));
    } else if (valueType.equals(TYPE_INTEGER_ARRAY)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        int[] array = new int[jsonArray.length()];
        for (int i = 0; i < array.length; i++) {
            array[i] = jsonArray.getInt(i);
        }
        bundle.putIntArray(key, array);
    } else if (valueType.equals(TYPE_LONG)) {
        bundle.putLong(key, json.getLong(JSON_VALUE));
    } else if (valueType.equals(TYPE_LONG_ARRAY)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        long[] array = new long[jsonArray.length()];
        for (int i = 0; i < array.length; i++) {
            array[i] = jsonArray.getLong(i);
        }
        bundle.putLongArray(key, array);
    } else if (valueType.equals(TYPE_FLOAT)) {
        bundle.putFloat(key, (float)json.getDouble(JSON_VALUE));
    } else if (valueType.equals(TYPE_FLOAT_ARRAY)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        float[] array = new float[jsonArray.length()];
        for (int i = 0; i < array.length; i++) {
            array[i] = (float)jsonArray.getDouble(i);
        }
        bundle.putFloatArray(key, array);
    } else if (valueType.equals(TYPE_DOUBLE)) {
        bundle.putDouble(key, json.getDouble(JSON_VALUE));
    } else if (valueType.equals(TYPE_DOUBLE_ARRAY)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        double[] array = new double[jsonArray.length()];
        for (int i = 0; i < array.length; i++) {
            array[i] = jsonArray.getDouble(i);
        }
        bundle.putDoubleArray(key, array);
    } else if (valueType.equals(TYPE_CHAR)) {
        String charString = json.getString(JSON_VALUE);
        if (charString != null && charString.length() == 1) {
            bundle.putChar(key, charString.charAt(0));
        }
    } else if (valueType.equals(TYPE_CHAR_ARRAY)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        char[] array = new char[jsonArray.length()];
        for (int i = 0; i < array.length; i++) {
            String charString = jsonArray.getString(i);
            if (charString != null && charString.length() == 1) {
                array[i] = charString.charAt(0);
            }
        }
        bundle.putCharArray(key, array);
    } else if (valueType.equals(TYPE_STRING)) {
        bundle.putString(key, json.getString(JSON_VALUE));
    } else if (valueType.equals(TYPE_STRING_LIST)) {
        JSONArray jsonArray = json.getJSONArray(JSON_VALUE);
        int numStrings = jsonArray.length();
        ArrayList<String> stringList = new ArrayList<String>(numStrings);
        for (int i = 0; i < numStrings; i++) {
            Object jsonStringValue = jsonArray.get(i);
            stringList.add(i, jsonStringValue == JSONObject.NULL ? null : (String)jsonStringValue);
        }
        bundle.putStringArrayList(key, stringList);
    }
}

2

আপনি কেন অ্যাপ্লিকেশন ক্লাসে আপনার অ্যারেলিস্টটি আটকে রাখছেন না? অ্যাপ্লিকেশনটি সত্যিই মারা গেলে এটি কেবল ধ্বংস হয়ে যায় , সুতরাং, যতক্ষণ অ্যাপটি পাওয়া যায় ততক্ষণ এটি আটকে থাকবে।


5
যদি অ্যাপ্লিকেশনটি আবার চালু করা হয় তবে কী হবে।
মনোহর পেরেপা

2

আমি যে সর্বোত্তম উপায়টি সন্ধান করতে পেরেছি সেটি হল 2 ডি অ্যারের কীগুলি তৈরি করা এবং অ্যারের কাস্টম আইটেমগুলি 2-D কী অ্যারের মধ্যে রাখা এবং তারপরে স্টার্টআপে 2D অ্যারের মাধ্যমে এটি পুনরুদ্ধার করা। স্ট্রিং সেট ব্যবহার করার ধারণাটি আমি পছন্দ করি না কারণ বেশিরভাগ অ্যান্ড্রয়েড ব্যবহারকারী এখনও জিনজারব্রেডে রয়েছেন এবং স্ট্রিং সেটটি ব্যবহার করার জন্য মধুচক্রের প্রয়োজন।

নমুনা কোড: এখানে ডিটার হলেন শেয়ার্ড প্রিফ এডিটর এবং রোউইটেম আমার কাস্টম অবজেক্ট।

editor.putString(genrealfeedkey[j][1], Rowitemslist.get(j).getname());
        editor.putString(genrealfeedkey[j][2], Rowitemslist.get(j).getdescription());
        editor.putString(genrealfeedkey[j][3], Rowitemslist.get(j).getlink());
        editor.putString(genrealfeedkey[j][4], Rowitemslist.get(j).getid());
        editor.putString(genrealfeedkey[j][5], Rowitemslist.get(j).getmessage());

2

নতুন লোক (আমাকে) এর জন্য আরও কয়েকটি লাইন সহ নিম্নলিখিত কোডটি স্বীকৃত উত্তর eg কীভাবে সেট টাইপ অবজেক্টটিকে অ্যারেলিস্টে ফিরে রূপান্তর করতে হয় এবং '.পুটস্ট্রিংসেট' এবং '.getStringSet' এর আগে কী হয় তার উপর অতিরিক্ত নির্দেশিকা প্রদর্শন করে। (ধন্যবাদ ব্যাডোন)

// shared preferences
   private SharedPreferences preferences;
   private SharedPreferences.Editor nsuserdefaults;

// setup persistent data
        preferences = this.getSharedPreferences("MyPreferences", MainActivity.MODE_PRIVATE);
        nsuserdefaults = preferences.edit();

        arrayOfMemberUrlsUserIsFollowing = new ArrayList<String>();
        //Retrieve followers from sharedPreferences
        Set<String> set = preferences.getStringSet("following", null);

        if (set == null) {
            // lazy instantiate array
            arrayOfMemberUrlsUserIsFollowing = new ArrayList<String>();
        } else {
            // there is data from previous run
            arrayOfMemberUrlsUserIsFollowing = new ArrayList<>(set);
        }

// convert arraylist to set, and save arrayOfMemberUrlsUserIsFollowing to nsuserdefaults
                Set<String> set = new HashSet<String>();
                set.addAll(arrayOfMemberUrlsUserIsFollowing);
                nsuserdefaults.putStringSet("following", set);
                nsuserdefaults.commit();



2

আপনি তালিকাটিকে স্ট্রিং এবং তদ্বিপরীত রূপান্তর করতে সিরিয়ালাইজেশন বা জিসন লাইব্রেরি ব্যবহার করতে পারেন এবং তারপরে পছন্দগুলিতে স্ট্রিং সংরক্ষণ করতে পারেন।

গুগলের জিসন লাইব্রেরি ব্যবহার করে:

//Converting list to string
new Gson().toJson(list);

//Converting string to list
new Gson().fromJson(listString, CustomObjectsList.class);

জাভা সিরিয়ালাইজেশন ব্যবহার:

//Converting list to string
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(list);
oos.flush();
String string = Base64.encodeToString(bos.toByteArray(), Base64.DEFAULT);
oos.close();
bos.close();
return string;

//Converting string to list
byte[] bytesArray = Base64.decode(familiarVisitsString, Base64.DEFAULT);
ByteArrayInputStream bis = new ByteArrayInputStream(bytesArray);
ObjectInputStream ois = new ObjectInputStream(bis);
Object clone = ois.readObject();
ois.close();
bis.close();
return (CustomObjectsList) clone;

2

এই পদ্ধতিটি অ্যারে তালিকা সংরক্ষণ / সংরক্ষণ করতে ব্যবহৃত হয়: -

 public static void saveSharedPreferencesLogList(Context context, List<String> collageList) {
            SharedPreferences mPrefs = context.getSharedPreferences("PhotoCollage", context.MODE_PRIVATE);
            SharedPreferences.Editor prefsEditor = mPrefs.edit();
            Gson gson = new Gson();
            String json = gson.toJson(collageList);
            prefsEditor.putString("myJson", json);
            prefsEditor.commit();
        }

এই পদ্ধতিটি অ্যারে তালিকা পুনরুদ্ধার করতে ব্যবহৃত হয়: -

public static List<String> loadSharedPreferencesLogList(Context context) {
        List<String> savedCollage = new ArrayList<String>();
        SharedPreferences mPrefs = context.getSharedPreferences("PhotoCollage", context.MODE_PRIVATE);
        Gson gson = new Gson();
        String json = mPrefs.getString("myJson", "");
        if (json.isEmpty()) {
            savedCollage = new ArrayList<String>();
        } else {
            Type type = new TypeToken<List<String>>() {
            }.getType();
            savedCollage = gson.fromJson(json, type);
        }

        return savedCollage;
    }

1

এটি সংরক্ষণ করার জন্য আপনি এটিকে কোনও Mapঅবজেক্টে রূপান্তর করতে পারেন , তারপরে মানগুলি একটি অ্যারেলিস্টে পরিবর্তন করুন যখন আপনি পুনরুদ্ধার করবেন SharedPreferences


1

এই কাস্টম ক্লাসটি ব্যবহার করুন:

public class SharedPreferencesUtil {

    public static void pushStringList(SharedPreferences sharedPref, 
                                      List<String> list, String uniqueListName) {

        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putInt(uniqueListName + "_size", list.size());

        for (int i = 0; i < list.size(); i++) {
            editor.remove(uniqueListName + i);
            editor.putString(uniqueListName + i, list.get(i));
        }
        editor.apply();
    }

    public static List<String> pullStringList(SharedPreferences sharedPref, 
                                              String uniqueListName) {

        List<String> result = new ArrayList<>();
        int size = sharedPref.getInt(uniqueListName + "_size", 0);

        for (int i = 0; i < size; i++) {
            result.add(sharedPref.getString(uniqueListName + i, null));
        }
        return result;
    }
}

ব্যবহারবিধি:

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
SharedPreferencesUtil.pushStringList(sharedPref, list, getString(R.string.list_name));
List<String> list = SharedPreferencesUtil.pullStringList(sharedPref, getString(R.string.list_name));

1

এই কাজ করা উচিত:

public void setSections (Context c,  List<Section> sectionList){
    this.sectionList = sectionList;

    Type sectionListType = new TypeToken<ArrayList<Section>>(){}.getType();
    String sectionListString = new Gson().toJson(sectionList,sectionListType);

    SharedPreferences.Editor editor = getSharedPreferences(c).edit().putString(PREFS_KEY_SECTIONS, sectionListString);
    editor.apply();
}

তাদের, ঠিক এটি ধরতে:

public List<Section> getSections(Context c){

    if(this.sectionList == null){
        String sSections = getSharedPreferences(c).getString(PREFS_KEY_SECTIONS, null);

        if(sSections == null){
            return new ArrayList<>();
        }

        Type sectionListType = new TypeToken<ArrayList<Section>>(){}.getType();
        try {

            this.sectionList = new Gson().fromJson(sSections, sectionListType);

            if(this.sectionList == null){
                return new ArrayList<>();
            }
        }catch (JsonSyntaxException ex){

            return new ArrayList<>();

        }catch (JsonParseException exc){

            return new ArrayList<>();
        }
    }
    return this.sectionList;
}

এটা আমার জন্য কাজ করে.


1

সংরক্ষণের তালিকার জন্য আমার ব্যবহারের শ্রেণি SharedPreferences

public class SharedPrefApi {
    private SharedPreferences sharedPreferences;
    private Gson gson;

    public SharedPrefApi(Context context, Gson gson) {
        this.sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        this.gson = gson;
    } 

    ...

    public <T> void putList(String key, List<T> list) {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, gson.toJson(list));
        editor.apply();
    }

    public <T> List<T> getList(String key, Class<T> clazz) {
        Type typeOfT = TypeToken.getParameterized(List.class, clazz).getType();
        return gson.fromJson(getString(key, null), typeOfT);
    }
}

ব্যবহার

// for save
sharedPrefApi.putList(SharedPrefApi.Key.USER_LIST, userList);

// for retrieve
List<User> userList = sharedPrefApi.getList(SharedPrefApi.Key.USER_LIST, User.class);


আমার ব্যবহারের সম্পূর্ণ কোড // কার্যকলাপ কোডে উদাহরণ ব্যবহার করে চেক করুন


1

আমি একটি স্ট্রিং সংরক্ষণ এবং পুনরুদ্ধারের একই পদ্ধতি ব্যবহার করেছি তবে এখানে অ্যারেলিস্ট সহ আমি হ্যাশসেটকে একটি মধ্যস্থকারী হিসাবে ব্যবহার করেছি

SharedPreferences এ অ্যারেলিস্ট সংরক্ষণ করতে আমরা হ্যাশসেট ব্যবহার করি:

1- আমরা SharedPreferences ভেরিয়েবল তৈরি করি (যেখানে অ্যারেতে পরিবর্তন ঘটে সেখানে)

2 - আমরা অ্যারেলিস্টটিকে হ্যাশসেটে রূপান্তর করি

3 - তারপরে আমরা স্ট্রিংসেটটি রেখে প্রয়োগ করি

4 - আপনি হ্যাশসেটের মধ্যে স্ট্রিংসেট পাবেন এবং হ্যাশসেট সেট করতে অ্যারেলিস্ট পুনরায় তৈরি করুন।

public class MainActivity extends AppCompatActivity {
    ArrayList<String> arrayList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SharedPreferences prefs = this.getSharedPreferences("com.example.nec.myapplication", Context.MODE_PRIVATE);

        HashSet<String> set = new HashSet(arrayList);
        prefs.edit().putStringSet("names", set).apply();


        set = (HashSet<String>) prefs.getStringSet("names", null);
        arrayList = new ArrayList(set);

        Log.i("array list", arrayList.toString());
    }
}

0
    public  void saveUserName(Context con,String username)
    {
        try
        {
            usernameSharedPreferences= PreferenceManager.getDefaultSharedPreferences(con);
            usernameEditor = usernameSharedPreferences.edit();
            usernameEditor.putInt(PREFS_KEY_SIZE,(USERNAME.size()+1)); 
            int size=USERNAME.size();//USERNAME is arrayList
            usernameEditor.putString(PREFS_KEY_USERNAME+size,username);
            usernameEditor.commit();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }
    public void loadUserName(Context con)
    {  
        try
        {
            usernameSharedPreferences= PreferenceManager.getDefaultSharedPreferences(con);
            size=usernameSharedPreferences.getInt(PREFS_KEY_SIZE,size);
            USERNAME.clear();
            for(int i=0;i<size;i++)
            { 
                String username1="";
                username1=usernameSharedPreferences.getString(PREFS_KEY_USERNAME+i,username1);
                USERNAME.add(username1);
            }
            usernameArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, USERNAME);
            username.setAdapter(usernameArrayAdapter);
            username.setThreshold(0);

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

0

উপরের সমস্ত উত্তর সঠিক। :) আমি নিজেও নিজের অবস্থার জন্য এর মধ্যে একটি ব্যবহার করেছি। তবে আমি যখন প্রশ্নটি পড়েছি তখন দেখতে পেলাম যে ওপি প্রকৃতপক্ষে এই পোস্টের শিরোনামের চেয়ে আলাদা দৃশ্যের কথা বলছে, যদি আমি এটি ভুল না পেয়ে থাকি।

"যদি ব্যবহারকারী ক্রিয়াকলাপটি ছেড়ে দেয় এবং পরে কোনও সময়ে ফিরে আসতে চায় তবে আমার চারপাশে ঘুরে দেখার জন্য অ্যারের প্রয়োজন"

তিনি অ্যাপ্লিকেশনটির পর্দা পরিবর্তন করে ব্যবহারকারীদের পর্দা নির্বিশেষে অ্যাপ্লিকেশনটি না হওয়া পর্যন্ত ডেটা সংরক্ষণ করতে চান।

"তবে অ্যাপ্লিকেশন পুরোপুরি বন্ধ হয়ে যাওয়ার পরে আরে উপলব্ধ হওয়ার দরকার নেই"

তবে একবার অ্যাপ্লিকেশনটি বন্ধ হয়ে গেলে ডেটা সংরক্ষণ করা উচিত নয় ence তবে আমি এটি ব্যবহার করে অনুভব করি SharedPreferences যেহেতু জন্য সর্বোত্তম উপায় নয়।

এই প্রয়োজনীয়তার জন্য কেউ কী করতে পারে তা হ'ল একটি শ্রেণি তৈরি করা যা Applicationক্লাস প্রসারিত করে ।

public class MyApp extends Application {

    //Pardon me for using global ;)

    private ArrayList<CustomObject> globalArray;

    public void setGlobalArrayOfCustomObjects(ArrayList<CustomObject> newArray){
        globalArray = newArray; 
    }

    public ArrayList<CustomObject> getGlobalArrayOfCustomObjects(){
        return globalArray;
    }

}

সেটার এবং গেটর ব্যবহার করে অ্যারেলিস্ট অ্যাপ্লিকেশনটির সাথে যে কোনও জায়গা থেকে অ্যাক্সেস করা যেতে পারে। অ্যাপ্লিকেশনটি বন্ধ হয়ে যাওয়ার পরে সর্বোত্তম অংশটি হ'ল আমাদের ডেটা সংরক্ষণ করার বিষয়ে চিন্তা করতে হবে না। :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.