如何使用sharedpreference存储一组ArrayList值

时间:2017-01-20 10:22:36

标签: java android

下面的代码检索多个选定的联系人并以ArrayList的形式存储它,但是一旦我关闭应用程序并打开选定的联系人列表就被删除了,所以应该存储数据,这样一旦我关闭并打开应用程序数据在数据被删除之前一直存在。任何人都可以帮助我使用共享首选项存储ArrayList值。

$(document).ready(function() {

    $(".slidingDiv").hide();
    $(".show_hide").show();

    $('.show_hide').click(function() {


         var isvisible = $(this).next('.slidingDiv').is(':visible');

         if ( isvisible ) {
           $(this).next('.slidingDiv').hide();
         } else{
           $(this).next('.slidingDiv').show(); 
         }
    });

});

}

以下代码是ArrayList,它保存所选的联系人值。

 private void chooseContact() {
    Intent intentContactPick = new Intent(MainActivity.this,ContactsPickerActivity.class);
    MainActivity.this.startActivityForResult(intentContactPick,CONTACT_PICK_REQUEST);
}

@Override
public void onActivityResult(int requestCode,int resultCode,Intent data){
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == CONTACT_PICK_REQUEST && resultCode == RESULT_OK){


        ArrayList<Contact> selectedContacts = data.getParcelableArrayListExtra("SelectedContacts");

        String display="";
        for(int i=0;i<selectedContacts.size();i++){

            display += (i+1)+". "+selectedContacts.get(i).toString()+"\n";

        }
        contactsDisplay.setText("Selected Contacts : \n\n"+display);

    }

}

4 个答案:

答案 0 :(得分:1)

您有不同的选择。

  • 使用服务并在后台运行,这样数据就不会在关闭时丢失。
  • 将数据写入对象并将其另存为文件,并在需要数据时读取对象。
  • 将对象写入共享首选项。

使用Gson库将数组或对象转换为Json,并以json格式将数据存储为String。

保存;

{"message":"success"}

读取;

SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = sharedPrefs.edit();
Gson gson = new Gson();

String json = gson.toJson(arrayList);

editor.putString(TAG, json);
editor.commit();

使用import java.lang.reflect.Type来避免错误。

答案 1 :(得分:0)

看到这一点。

商品

 public List<Contact> getData(Context context){
        SharedPreferences preferences=context.getSharedPreferences("contact_prefs",Context.MODE_PRIVATE);
        Gson gson = new Gson();
        return gson.fromJson(preferences.getString("data",null), new TypeToken<List<Photo>>() {
        }.getType());

    }

<强>读取

CREATE KEYSPACE IF NOT EXISTS import_test WITH REPLICATION = 
{ 'class' : 'SimpleStrategy', 'replication_factor' : 1 };

CREATE TABLE  transactional_data (
 job varchar,
 client varchar, 
 run int,
 chunk int,
 mdh_id uuid,
 gtin varchar, 
 sender varchar, 
 receiver varchar,
 quantity int,
 ta_id varchar, 
 type varchar,  
 ts timestamp,
 add_info map<text, text>, 
 PRIMARY KEY ((job, client, run, chunk), mdh_id));

答案 2 :(得分:0)

Ranjith KP答案很棒。别忘了添加依赖性:

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

对于上下文,你可以传递你的活动(只需使用&#39;这个&#39;代替)。

标签 - 这只是一个字符串,添加

String TAG = "tag";

关于您活动的成员。

答案 3 :(得分:0)

要将键值对保存到共享首选项:

SharedPreferences sharedPreference = context.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
Editor editor = sharedPreference.edit();
editor.putString(key, value);
editor.apply();

context:传递调用上下文或Base Context或Application Context(片段中的 getContext()或Activity中的 getBaseContext()