Bu dersimizde daha önceki derste gson kullanarak sharedpreference dosyasına json string formatında yazdığımız veriyi okuyup yine gson kullanarak Calisan sınıf tipine nasıl çevireceğimizden bahsettik.
Bir önceki derste gson kütüphanesi yardımıyla Calisan tipindeki java nesnemizi serialization işlemine tabi tutarak json stringine çevirip dosyamıza kaydetmiştik. Bu derste bu işlemin tam tersi olan json string bir ifadeyi yine gson kullanarak java nesnesine dönüştürmeyi öğrendik ki bu işleme de deserialization deniyor.
Bu işlemi yapmak için öncelikle bir gson nesnesi üretip, bu nesne üzerinden fromJson() methodunu çalıştırıyoruz. Sharedpreferences dosyasından string olarak çektiğimiz veriyi bu methoda birinci parametre olarak gönderiyoruz. İkinci parametre olarak da bu string ifadenin dönüştüreleceği veri tipini yani sınıfını belirtiyoruz. Bu method bize ikinci parametrede belirttiğimiz sınıf nesnesini geri döndürür.
1 2 3 4 5 |
SharedPreferences sharedPreferences=getPreferences(MODE_PRIVATE); String jsonStr= sharedPreferences.getString("calisan_key", ""); Gson gson=new Gson(); Calisan calisan=gson.fromJson(jsonStr, Calisan.class); |
Daha sonra elde ettiğimiz bu calisan nesnesini calisanGoster() methoduna göndererek kullanıcıya tüm verileri gösteriyoruz.
Bu derste yazılan kodlar aşağıda belirtilmiştir. SharedPreferencewithGson projesinin bitmiş son halini buradaki linkten indirebilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
public class MainActivity extends AppCompatActivity { private TextView tvData; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvData= (TextView) findViewById(R.id.data); } public void saveCustomClassObject(View view) { Calisan calisan=calisanOlustur(); SharedPreferences sharedPreferences=getPreferences(MODE_PRIVATE); SharedPreferences.Editor editor=sharedPreferences.edit(); Gson gson=new Gson(); String jsonStr= gson.toJson(calisan, Calisan.class); Log.i("emre", "Save: "+jsonStr); editor.putString("calisan_key", jsonStr); editor.apply(); } public void loadCustomClassObject(View view) { SharedPreferences sharedPreferences=getPreferences(MODE_PRIVATE); String jsonStr= sharedPreferences.getString("calisan_key", ""); Log.i("emre", "Load :" +jsonStr); Gson gson=new Gson(); Calisan calisan=gson.fromJson(jsonStr, Calisan.class); calisanGoster(calisan); } private void calisanGoster(Calisan calisan) { String goster= calisan.getIsim() + "\n" + calisan.getMeslek() + "\n" + calisan.getId() + "\n" + (calisan.getAktif() ? "Çalışıyor" : "Çalışmıyor") + "\n" + calisan.getGorev().toString(); tvData.setText(goster); } private Calisan calisanOlustur(){ Calisan calisan=new Calisan(); calisan.setIsim("Emre"); calisan.setMeslek("Mühendis"); calisan.setAktif(true); calisan.setId(150); calisan.setGorev(Arrays.asList("Yönetici", "Developer")); return calisan; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pageLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="20dp" tools:context="com.example.emrealtunbilek.sharedprefereneswithgson.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:onClick="saveCustomClassObject" android:text="KAYDET"/> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="loadCustomClassObject" android:text="GETİR"/> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/data" android:layout_marginTop="40dp" android:textSize="20sp" android:layout_gravity="center" android:text="DATA" android:textStyle="bold" /> </LinearLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import java.util.List; public class Calisan { private String isim; private String meslek; private Integer id; private List<String> gorev; private Boolean aktif; public String getIsim() { return isim; } public void setIsim(String isim) { this.isim = isim; } public String getMeslek() { return meslek; } public void setMeslek(String meslek) { this.meslek = meslek; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public List<String> getGorev() { return gorev; } public void setGorev(List<String> gorev) { this.gorev = gorev; } public Boolean getAktif() { return aktif; } public void setAktif(Boolean aktif) { this.aktif = aktif; } } |