Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

จะบันทึก ArrayList ไปยัง SharedPreferences บน Android ได้อย่างไร


ก่อนที่จะเข้าสู่การตั้งค่าที่ใช้ร่วมกันในการจัดเก็บตัวอย่างอาร์เรย์ เราควรรู้ว่าการตั้งค่าที่ใช้ร่วมกันใน Android คืออะไร การใช้การตั้งค่าร่วมกัน เราสามารถจัดเก็บหรือดึงค่าเป็นคู่ของคีย์และค่า มีห้าวิธีที่แตกต่างกันในการตั้งค่าการแชร์ดังที่แสดงด้านล่าง -

  • แก้ไข() − มันจะแก้ไขค่ากำหนดที่ใช้ร่วมกัน

  • กระทำ() - มันจะคอมมิตค่ากำหนดที่ใช้ร่วมกันในไฟล์ xml

  • สมัคร() − มันจะส่งกลับการเปลี่ยนแปลงจากตัวแก้ไขเป็นการตั้งค่าที่ใช้ร่วมกัน

  • ลบ(คีย์สตริง) − มันจะลบคีย์และวาลออกจากคีย์การใช้การตั้งค่าที่ใช้ร่วมกัน

  • ใส่() − มันจะใส่คีย์และค่าไปยัง xml การกำหนดลักษณะที่ใช้ร่วมกัน

ตัวอย่างไวยากรณ์ของการตั้งค่าที่ใช้ร่วมกันดังแสดงด้านล่าง -

สุดท้าย SharedPreferences sharedPreferences =getSharedPreferences("USER",MODE_PRIVATE);

ในไวยากรณ์ข้างต้น เราได้สร้างไฟล์การกำหนดค่าตามความชอบที่ใช้ร่วมกันเป็น USER.xml และเป็นโหมดส่วนตัวหมายความว่าไม่มีแอปพลิเคชันอื่นที่สามารถเข้าถึงการตั้งค่าที่ใช้ร่วมกันนี้ได้

ตัวอย่างด้านล่างนี้สาธิตวิธีใช้การตั้งค่าที่ใช้ร่วมกันใน Android

ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่

ขั้นตอนที่ 2 − เพิ่มรหัสต่อไปนี้ใน res/layout/activity_main.xml .

   <ปุ่ม android:id ="@+id/button " android:layout_width ="108dp" android:layout_height ="wrap_content" android:layout_marginStart ="8dp" android:layout_marginLeft ="8dp" android:layout_marginTop ="120dp" android:layout_marginEnd ="8dp" android:layout_marginRight =" android:gravity ="center_horizontal" android:text ="บันทึก" app:layout_constraintEnd_toEndOf ="parent" app:layout_constraintHorizontal_bias ="0.503" app:layout_constraintStart_toStartOf ="parent" app:layout_constraintTop_toTopOfdress ="@+id/Button" android:id ="@+id/read" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_marginStart ="8dp" android:layout_marginLeft ="8dp" android:layout_margi nTop ="88dp" android:layout_marginEnd ="8dp" android:layout_marginRight ="8dp" android:gravity ="center_horizontal" android:text ="read" app:layout_constraintEnd_toEndOf ="พาเรนต์" app:layout_constraintStart_toStartlayOf_parent ="conint" app:layout_constraintStart_toStartlayOf_parent ="@+id/button" /> 

ใน xml ด้านบน จะมีข้อความแก้ไขสองข้อความสำหรับชื่อและที่อยู่ เมื่อผู้ใช้คลิกปุ่มบันทึก ระบบจะเก็บค่าเป็นอาร์เรย์ในการตั้งค่าที่ใช้ร่วมกัน และเมื่อผู้ใช้คลิกที่ปุ่มอ่าน ระบบจะอ่านค่าจากอาร์เรย์ที่มีอยู่ในที่แชร์ ค่ากำหนด

ขั้นตอนที่ 3 − เพิ่มรหัสต่อไปนี้ใน src/MainActivity.java

แพ็คเกจ com.example.andy.myapplication;นำเข้า android.annotation.SuppressLint;นำเข้า android.content.SharedPreferences;นำเข้า android.support.v7.app.AppCompatActivity;นำเข้า android.os.Bundle;นำเข้า android.util.Log;นำเข้า android.view.View;นำเข้า android.widget.Button;นำเข้า android.widget.EditText;นำเข้า android.widget.TextView;นำเข้า android.widget.Toast;นำเข้า com.google.gson.Gson;นำเข้า com.google gson.reflect.TypeToken;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;คลาสสาธารณะ MainActivity ขยาย AppCompatActivity {@ แทนที่การป้องกันโมฆะ onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); สุดท้าย ArrayList arrPackage; setContentView(R.layout.activity_main); สุดท้าย SharedPreferences sharedPreferences =getSharedPreferences("USER",MODE_PRIVATE); ชื่อ EditText สุดท้าย =findViewById(R.id.name); ที่อยู่ EditText สุดท้าย =findViewById(R.id.address); ผลลัพธ์ TextView สุดท้าย =findViewById(R.id.result); ปุ่มบันทึก =findViewById(R.id.button); ปุ่มอ่าน =findViewById(R.id.read); arrPackage =ใหม่ ArrayList<>(); read.setOnClickListener (View.OnClickListener ใหม่ () { @SuppressLint ("LongLogTag") @ แทนที่โมฆะสาธารณะ onClick (ดู v) { Gson gson =ใหม่ Gson (); String json =sharedPreferences.getString ("Set", ""); if (json.isEmpty()) { Toast.makeText(MainActivity.this,"มีข้อผิดพลาดบางอย่าง",Toast.LENGTH_LONG).show(); } else { Type type =new TypeToken>() { }.getType(); List arrPackageData =gson.fromJson(json, type); for(String data:arrPackageData) { result.setText(data); } } } }); save.setOnClickListener ( View.OnClickListener ใหม่ () { @แทนที่โมฆะสาธารณะ onClick (ดู v) { if (name.getText ().toString ().isEmpty () &&address.getText ().toString ().isEmpty () ) { Toast.makeText(MainActivity.this,"กรุณาป้อนข้อมูลทั้งหมด",Toast.LENGTH_LONG).show(); }else{ String nameData =name.getText().toString().trim(); String addressData =address.getText().toString().trim(); arrPackage.add(nameData); arrPackage.add(addressData); Gson gson =Gson ใหม่ (); String json =gson.toJson(arrPackage); ตัวแก้ไข SharedPreferences.Editor =sharedPreferences.edit(); editor.putString("Set",json ); editor.commit(); } } });}

ในโค้ดด้านบนนี้ เราได้แปลง arraylist เป็น GSON และดึงข้อมูล GSON เป็นสตริง

ขั้นตอนที่ 4 − ในการเข้าถึง GSON เราต้องเพิ่ม GSON Library ใน build.gradle ดังที่แสดงด้านล่าง -

<ก่อนหน้า>ใช้ปลั๊กอิน:'com.android.application'android { compileSdkVersion 28 defaultConfig { applicationId "com.example.andy.myapplication" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner " } buildTypes { รีลีส { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } การพึ่งพา { การนำไปใช้ fileTree (dir:'libs' รวมถึง:['*.jar'] ) การใช้งาน 'com.google.code.gson:gson:2.8.5' การใช้งาน 'com.android.support:appcompat-v7:28.0.0' การใช้งาน 'com.android.support.constraint:constraint-layout:1.1.3 ' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

ขั้นตอนที่ 5 − ไม่จำเป็นต้องเปลี่ยน manifest.xml มาลองเรียกใช้แอปพลิเคชันของคุณกัน

ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์แล้วคลิกไอคอน Run จากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก แล้วตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ -

จะบันทึก ArrayList ไปยัง SharedPreferences บน Android ได้อย่างไร

ในตัวอย่างข้างต้น เราได้เพิ่มชื่อและที่อยู่ และคลิกที่ปุ่มบันทึก

จะบันทึก ArrayList ไปยัง SharedPreferences บน Android ได้อย่างไร

ในตัวอย่างข้างต้น เราได้คลิกที่ปุ่มอ่าน มันจะต่อท้ายข้อความเพื่อดูข้อความ