Gönderiler Android SQLite Veritabanı İşlemleri
Post
Vazgeç

Android SQLite Veritabanı İşlemleri

SQLite veritabanımız telefonumuzda bizim için beğendiğimiz filmlerin bilgilerini tutacak. Bu filmleri uygulamamızın favoriler bölümünden göstereceğiz.

İlk önce projemizde bir değişiklik yapacağız. App build.gradle dosyasını açıyoruz ve adağıdaki kodu Android bölümünün içine ekliyoruz. Bu kod ile kodumuzun hangi java sürümü ile uyumlu olduğunu belirtiyoruz.

1
2
3
4
compileOptions {
targetCompatibility = "8"
sourceCompatibility = "8"
}

Veritabanımızı oluşturmadan önce favoriler bölümünü hazırlamamız gerekiyor. Projemizde favoriler fragment layout dosyasını açıyoruz. Sayfanın tasarımını Relativelayout olarak yapacağız. Relativelayout etiketlerinin arasına recyclerview ekliyoruz ve bir id veriyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".FavoritesFragment">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/firebaselist"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    </androidx.recyclerview.widget.RecyclerView>
</RelativeLayout>

Veritabanımız için bir tane model sınıfına ihtiyacımız var. Model isimli bir java dosyası oluşturuyoruz. Aynı Firebase model sınıfında olduğu gibi değişkenleri global olarak giriyoruz. Kurucu methodumuzu yazıp boş bırakıyoruz. Ardından getter ve setter’ları ekliyoruz ve model sınıfımız bitmiş oluyor.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
public class Model {

    private String film_adi;

    private String film_yili;

    private String film_puan;

    private String film_image;

    private String film_youtube;

    private String film_ozet;

    private String film_sure;

    private String film_ozet_eng;

    private String film_sure_eng;

    private String text_color;

    private String film_oyuncular;

    private String film_tur;

    private String film_tur_eng;

    private String film_yonetmen;

    private String film_sinif;

    private String film_resimler;

    Model() {

    }

    public String getFilm_adi() {
        return film_adi;
    }

    public void setFilm_adi(String film_adi) {
        this.film_adi = film_adi;
    }

    public String getFilm_yili() {
        return film_yili;
    }

    public void setFilm_yili(String film_yili) {
        this.film_yili = film_yili;
    }

    public String getFilm_puan() {
        return film_puan;
    }

    public void setFilm_puan(String film_puan) {
        this.film_puan = film_puan;
    }

    public String getFilm_image() {
        return film_image;
    }

    public void setFilm_image(String film_image) {
        this.film_image = film_image;
    }

    public String getFilm_youtube() {
        return film_youtube;
    }

    public void setFilm_youtube(String film_youtube) {
        this.film_youtube = film_youtube;
    }

    public String getFilm_ozet() {
        return film_ozet;
    }

    public void setFilm_ozet(String film_ozet) {
        this.film_ozet = film_ozet;
    }

    public String getFilm_sure() {
        return film_sure;
    }

    public void setFilm_sure(String film_sure) {
        this.film_sure = film_sure;
    }

    public String getFilm_ozet_eng() {
        return film_ozet_eng;
    }

    public void setFilm_ozet_eng(String film_ozet_eng) {
        this.film_ozet_eng = film_ozet_eng;
    }

    public String getFilm_sure_eng() {
        return film_sure_eng;
    }

    public void setFilm_sure_eng(String film_sure_eng) {
        this.film_sure_eng = film_sure_eng;
    }

    public String getText_color() {
        return text_color;
    }

    public void setText_color(String text_color) {
        this.text_color = text_color;
    }

    public String getFilm_oyuncular() {
        return film_oyuncular;
    }

    public void setFilm_oyuncular(String film_oyuncular) {
        this.film_oyuncular = film_oyuncular;
    }

    public String getFilm_tur() {
        return film_tur;
    }

    public void setFilm_tur(String film_tur) {
        this.film_tur = film_tur;
    }

    public String getFilm_tur_eng() {
        return film_tur_eng;
    }

    public void setFilm_tur_eng(String film_tur_eng) {
        this.film_tur_eng = film_tur_eng;
    }

    public String getFilm_yonetmen() {
        return film_yonetmen;
    }

    public void setFilm_yonetmen(String film_yonetmen) {
        this.film_yonetmen = film_yonetmen;
    }

    public String getFilm_sinif() {
        return film_sinif;
    }

    public void setFilm_sinif(String film_sinif) {
        this.film_sinif = film_sinif;
    }

    public String getFilm_resimler() {
        return film_resimler;
    }

    public void setFilm_resimler(String film_resimler) {
        this.film_resimler = film_resimler;
    }
}

SQLite işlemleri için java dosyası oluşturacağız. Favorites isimli java dosyası oluşturuyoruz. Sınıf SQLiteOpenHelper sınıfından kalıtım alacak. Veritabanı versiyonu global değişken olarak giriyoruz. İleride veritabanına yeni alanlar eklendiğinde bu versiyon numarasını arttırabilirsiniz. Veritabanı adını, tablo adını ve alan adlarını global değişken olarak giriyoruz. Kurucu methodu yazıyoruz. Silme işlemi methodunu yazıyoruz. Burada methoda değişken olarak silinecek film adını gönderiyoruz. Veritabanını yazılacak şekilde açıyoruz. Veritabanında arama yaptırıp silinecek dosyanın adını vererek siliyoruz. Veritabanı oluşturma methodunu yazıyoruz. Veri için id değişkeni oluşturuyoruz. Ardından tablo oluşturup sırayla alanların adlarını veriyoruz ve bunu değişkene atıyoruz. Bu değişkeni veritabanına yüklüyoruz. Ekleme işlemini yapmak için method yazıyoruz. Method değişken olarak film bilgilerini alıyor. Veritabanını yazılacak şekilde açıyoruz. Bir tane content values oluşturuyoruz. Veritabanına ekleyeceğimiz bilgileri değişken türü ile birlikte bu değişkene veriyoruz. Değişkeni veritabanına ekleyip veritabanını kapatıyoruz. Veritabanından veri çekme methodunu yazıyoruz. Verileri tutmak için bir tane liste oluşturuyoruz. Sql sorgusu için query oluşturuyoruz. Veritabanını yazılacak şekilde açıyoruz. Okuma işlemi için bir tane gösterge oluşturuyoruz. Do while döngüsü oluşturuyoruz. Veritabanı model sınıfımızdan bir nesne oluşturuyoruz. Model nesnesine set ile veri ekleme yapıyoruz. Veriyi göstergeden index belirterek yapıyoruz. Bu index’ler veritabanını oluştururken verdiğimiz alanların sırası ile oluyor. Örneğin 5. index’te 5. alan oluyor. Bütün veriler nesneye eklendikten sonra listeye eklenip gösterge ilerletiliyor. Okuma bittikten sonra gösterge ve veritabanını kapatıp listeyi geri döndürüyoruz. Kontrol sınıfı ekliyoruz. Bu method ile beğen tuşuna bastığımız filmin veritabanında ekli olup olmadığını kontrol edeceğiz. Veritabanını yazılacak şekilde açıyoruz. Sql sorgusu oluşturuyoruz. Bir tane gösterge oluşturuyoruz. Eğer göstergenin değeri 0 ise veritabanında bu film ekli değil demektir ve true dönüyoruz. Eğer göstergenin değeri 0 dan büyük ise veritabanında ekli demektir ve false dönüyoruz. Son olarak veritabanı güncelleme methodu yazıyoruz. İçini boş bırakıyoruz. İleride veritabanını günceller iseniz burada eski verilere alan eklemesini burada yapabilirsiniz.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
public class Favorites extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "Favoriler";
    private static final String TABLE_NAME = "filmler";
    private static String FILM_ADI = "film_adi";
    private static String FILM_YILI = "film_yili";
    private static String FILM_PUAN = "film_puan";
    private static String FILM_IMAGE = "film_image";
    private static String FILM_YOUTUBE = "film_youtube";
    private static String FILM_OZET = "film_ozet";
    private static String FILM_SURE = "film_sure";
    private static String FILM_OZET_ENG = "film_ozet_eng";
    private static String FILM_SURE_ENG = "film_sure_eng";
    private static String TEXT_COLOR= "text_color";
    private static String FILM_OYUNCULAR = "film_oyuncular";
    private static String FILM_TUR = "film_tur";
    private static String FILM_TUR_ENG = "film_tur_eng";
    private static String FILM_YONETMEN = "film_yonetmen";
    private static String FILM_SINIF="film_sinif";
    private static String FILM_RESIMLER="film_resimler";

    public Favorites(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public void deleteData (String ad){
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_NAME, "film_adi = ?", new String[]{ad});
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String FILM_ID = "id";
        String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "("
                + FILM_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
                + FILM_ADI + " TEXT,"
                + FILM_YILI + " TEXT,"
                + FILM_PUAN + " TEXT,"
                + FILM_IMAGE + " TEXT,"
                + FILM_YOUTUBE + " TEXT,"
                + FILM_OZET + " TEXT,"
                + FILM_SURE + " TEXT,"
                + FILM_OZET_ENG + " TEXT,"
                + FILM_SURE_ENG + " TEXT,"
                + TEXT_COLOR + " TEXT,"
                + FILM_OYUNCULAR + " TEXT,"
                + FILM_TUR + " TEXT,"
                + FILM_TUR_ENG + " TEXT,"
                + FILM_YONETMEN + " TEXT,"
                + FILM_SINIF + " TEXT,"
                + FILM_RESIMLER + " TEXT" + ")";
        db.execSQL(CREATE_TABLE);
    }

    public void ekle(String film_adi, String film_yili,String film_puan,String film_image,String film_youtube,
                     String film_ozet,String film_sure,String film_ozet_eng,String film_sure_eng,String text_color,
                     String film_oyuncular,String film_tur,String film_tur_eng,String film_yonetmen,String film_sinif,String film_resimler) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(FILM_ADI, film_adi);
        values.put(FILM_YILI, film_yili);
        values.put(FILM_PUAN, film_puan);
        values.put(FILM_IMAGE, film_image);
        values.put(FILM_YOUTUBE,film_youtube);
        values.put(FILM_OZET,film_ozet);
        values.put(FILM_SURE,film_sure);
        values.put(FILM_OZET_ENG,film_ozet_eng);
        values.put(FILM_SURE_ENG,film_sure_eng);
        values.put(TEXT_COLOR,text_color);
        values.put(FILM_OYUNCULAR,film_oyuncular);
        values.put(FILM_TUR,film_tur);
        values.put(FILM_TUR_ENG,film_tur_eng);
        values.put(FILM_YONETMEN,film_yonetmen);
        values.put(FILM_SINIF,film_sinif);
        values.put(FILM_RESIMLER,film_resimler);

        db.insert(TABLE_NAME, null, values);
        db.close();
    }

    public List<Model> getDataFromDB(){
        List<Model> modelList = new ArrayList<>();
        String query = "select * from "+TABLE_NAME;

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(query,null);

        if (cursor.moveToFirst()){
            do {
                Model model = new Model();
                model.setFilm_adi(cursor.getString(1));
                model.setFilm_yili(cursor.getString(2));
                model.setFilm_puan(cursor.getString(3));
                model.setFilm_image(cursor.getString(4));
                model.setFilm_youtube(cursor.getString(5));
                model.setFilm_ozet(cursor.getString(6));
                model.setFilm_sure(cursor.getString(7));
                model.setFilm_ozet_eng(cursor.getString(8));
                model.setFilm_sure_eng(cursor.getString(9));
                model.setText_color(cursor.getString(10));
                model.setFilm_oyuncular(cursor.getString(11));
                model.setFilm_tur(cursor.getString(12));
                model.setFilm_tur_eng(cursor.getString(13));
                model.setFilm_yonetmen(cursor.getString(14));
                model.setFilm_sinif(cursor.getString(15));
                model.setFilm_resimler(cursor.getString(16));
                modelList.add(model);
            }while (cursor.moveToNext());
        }
        cursor.close();
        db.close();
        return modelList;
    }

    public boolean Kontrol(String filmadi){
        SQLiteDatabase db = this.getWritableDatabase();
        String sql ="SELECT * FROM filmler WHERE film_adi='"+filmadi+"'";
        Cursor cursor = db.rawQuery(sql,null);

        if(cursor.getCount()>0){
            cursor.close();
            return false;
        }else{
            cursor.close();
            return true;
        }
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

Favoriler kısmında kullanacağımız recyclerview için adapter oluşturmamız gereklidir. RecyclerAdapter isimli bir java dosyası oluşturuyoruz. Bu dosya FirebaseAdapter ile aynı olacaktır. Bu sınıf Recycler.Adapter sınıfından kalıtım alacaktır. Global olarak bir liste, bir integer, bir context ve film bilgileri için string tipinde değişkenler ekliyoruz. Kurucu method oluşturup gelen liste ve context değişkenlerini global değişkenler ile değiştiriyoruz. Userviewholder sınıfını yazıyoruz ve daha önceden oluşturduğumuz kart tasarımını veriyoruz. Liste büyüklüğünü döndürecek olan getItemCount methodunu yazıyoruz.

Karta beğenme butonu ekleyeceğiz. Beğenme butonu için ikon ekliyoruz. Kart tasarımını açıp ImageButton ekliyoruz. Gerekli özellikleri ekleyip adapter’a geri dönüyoruz.

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
<androidx.cardview.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardUseCompatPadding="true"
    app:cardElevation="8dp"
    app:cardCornerRadius="5dp">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/cardLayout">

        <ImageView
            android:id="@+id/cardPicture"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:layout_alignParentStart="true"
            android:textColor="@color/colorBlack"
            android:adjustViewBounds="true"
            android:cropToPadding="false"
            android:scaleType="fitXY"
            />
        <TextView
            android:textAppearance="?attr/textAppearanceHeadline6"
            android:id="@+id/cardTitle1"
            android:layout_below="@id/cardPicture"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:layout_marginTop="14dp"
            android:textColor="@color/colorBlack"
            android:layout_marginStart="15dp"
            />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/star"
            android:src="@drawable/ic_star_black_24dp"
            android:layout_below="@id/cardTitle1"
            android:layout_marginTop="14dp"
            android:layout_alignStart="@id/cardTitle1"
            android:layout_marginBottom="15dp"
            />
        <TextView
            android:id="@+id/cardTitle2"
            android:layout_toEndOf="@+id/star"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:layout_below="@id/cardTitle1"
            android:layout_marginTop="14dp"
            android:layout_marginStart="10dp"
            android:textColor="@color/colorBlack"
            />
        <ImageButton
            android:id="@+id/button_fav"
            android:layout_alignParentEnd="true"
            android:layout_marginEnd="15dp"
            android:layout_width="25dp"
            android:background="@color/colorWhite"
            android:layout_height="25dp"
            android:layout_marginTop="14dp"
            android:layout_below="@id/cardTitle1"
            app:srcCompat="@drawable/ic_favorite"
            />
    </RelativeLayout>
</androidx.cardview.widget.CardView>

Kart tasarımındaki ögelere erişeceğimiz userViewHolder kısmını yazıyoruz ve nesneler oluşturup tasarım ögeleri ile eşleştiriyoruz. OnBindViewHolder methodunu oluşturup nesnelere erişiyoruz. Nesnelere listeden veri okuyup gerekli işlemleri yapıyoruz. Beğenme butonuna click listener ekliyoruz. Eskisinden farklı olarak build.gradle bölümün eklediğimiz kod sayesinde artık lambda kullanabiliriz. Tuşa basıldığı zaman listeden film bilgilerini okuyup string tipindeki değişkenlere atıyoruz. Veritabanından kontrol edip veritabanında ekli ise silme işlemi ekli değil ise ekleme işlemi yapıyoruz. Aynı zamanda kart üzerindeki beğenme butonunu değiştiriyoruz. Ekli ise kırmızı ekli değilse içi boş olacak. Eğer ekli ise listeden siliyoruz. Böylece recyclerviewden görüntüsü de gidecektir. Listenin değiştiğini belirtmek için adapter’ı uyarıyoruz. Bunun için click listener dışında veritabanı kontrolü yapıyoruz ve imagebutton ikonunu değiştiriyoruz.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.UserViewHolder>{

    private List<Model> list;
    private int sira;
    private Context context;
    private String filmadi,filmyili,filmpuani,filmozeti,filmfoto,filmyoutube,filmsure,filmozeteng,filmsureeng,textcolor,filmoyuncular,filmtur,filmtureng,filmyonetmen,filmsinif,filmresimler;

    public RecyclerAdapter(Context context, List<Model> list) {
        this.list = list;
        this.context=context;
    }

    @NonNull
    @Override
    public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new UserViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull final UserViewHolder holder, final int position) {
        holder.txt_film_adi.setText(list.get(position).getFilm_adi());
        holder.txt_film_puani.setText(list.get(position).getFilm_puan());
        Picasso.get().load(list.get(position).getFilm_image()).into(holder.txt_image);
        final Favorites favorites = new Favorites(context);
        if(!favorites.Kontrol(list.get(position).getFilm_adi())){
            holder.txt_fav.setImageResource(R.drawable.ic_favorite_ekli);
        }
        holder.txt_fav.setOnClickListener(v -> {
            filmadi=list.get(position).getFilm_adi();
            filmyili=list.get(position).getFilm_yili();
            filmpuani=list.get(position).getFilm_puan();
            filmozeti=list.get(position).getFilm_ozet();
            filmfoto=list.get(position).getFilm_image();
            filmyoutube=list.get(position).getFilm_youtube();
            filmsure=list.get(position).getFilm_sure();
            filmozeteng=list.get(position).getFilm_ozet_eng();
            filmsureeng=list.get(position).getFilm_sure_eng();
            textcolor=list.get(position).getText_color();
            filmoyuncular=list.get(position).getFilm_oyuncular();
            filmtur=list.get(position).getFilm_tur();
            filmtureng=list.get(position).getFilm_tur_eng();
            filmyonetmen=list.get(position).getFilm_yonetmen();
            filmsinif=list.get(position).getFilm_sinif();
            filmresimler=list.get(position).getFilm_resimler();
            if (favorites.Kontrol(filmadi)){
                favorites.ekle(filmadi,filmyili,filmpuani,filmfoto,filmyoutube,filmozeti,filmsure,filmozeteng,filmsureeng,textcolor,filmoyuncular,filmtur,filmtureng,filmyonetmen,filmsinif,filmresimler);
                favorites.close();
                Snackbar.make(v,v.getResources().getString(R.string.favoriekle), Snackbar.LENGTH_LONG).show();
                holder.txt_fav.setImageResource(R.drawable.ic_favorite_ekli);

            }else {
                favorites.deleteData(filmadi);
                Snackbar.make(v,v.getResources().getString(R.string.favoricikti), Snackbar.LENGTH_LONG).show();
                list.remove(position);
                notifyDataSetChanged();

            }
        });
        holder.txt_layout.setOnClickListener(v -> {
            sira=position;
            Intent intent = new Intent(v.getContext(), DetailsActivity.class);
            intent.putExtra("film_ismi", list.get(position).getFilm_adi());
            intent.putExtra("film_yili", list.get(position).getFilm_yili());
            intent.putExtra("film_puani", list.get(position).getFilm_puan());
            intent.putExtra("film_image",list.get(position).getFilm_image());
            intent.putExtra("film_youtube",list.get(position).getFilm_youtube());
            intent.putExtra("film_ozet",list.get(position).getFilm_ozet());
            intent.putExtra("film_sure",list.get(position).getFilm_sure());
            intent.putExtra("film_ozet_eng",list.get(position).getFilm_ozet_eng());
            intent.putExtra("film_sure_eng",list.get(position).getFilm_sure_eng());
            intent.putExtra("film_color",list.get(position).getText_color());
            intent.putExtra("film_oyuncular",list.get(position).getFilm_oyuncular());
            intent.putExtra("film_tur",list.get(position).getFilm_tur());
            intent.putExtra("film_tur_eng",list.get(position).getFilm_tur_eng());
            intent.putExtra("film_yonetmen",list.get(position).getFilm_yonetmen());
            intent.putExtra("film_sinif",list.get(position).getFilm_sinif());
            intent.putExtra("film_resimler",list.get(position).getFilm_resimler());
            v.getContext().startActivity(intent);
        });

    }

    public int getSira(){
        return sira;
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class UserViewHolder extends RecyclerView.ViewHolder{

        ImageView txt_image;
        TextView txt_film_adi,txt_film_puani;
        ImageButton txt_fav;
        RelativeLayout txt_layout;

        private UserViewHolder(View itemView){
            super(itemView);

            txt_fav= itemView.findViewById(R.id.button_fav);
            txt_film_adi=itemView.findViewById(R.id.cardTitle1);
            txt_film_puani=itemView.findViewById(R.id.cardTitle2);
            txt_image=itemView.findViewById(R.id.cardPicture);
            txt_layout=itemView.findViewById(R.id.cardLayout);
        }
    }
}

Aynı işlemleri FirebaseAdapter içinde yapacağız. Aynı şeyleri yeniden anlatmayacağım direk kodu atacağım.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
public class FirebaseAdapter extends RecyclerView.Adapter<FirebaseAdapter.UserViewHolder>{

    private List<Movies> list;
    private Context context;
    private int sira;
    private String filmadi,filmyili,filmpuani,filmozeti,filmfoto,filmyoutube,filmsure,filmozeteng,filmsureeng,textcolor,filmoyuncular,filmtur,filmtureng,filmyonetmen,filmsinif,filmresimler;


    public FirebaseAdapter(List<Movies> list,Context context){
        this.list=list;
        this.context=context;
    }

    @NonNull
    @Override
    public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType){
        return new UserViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull final FirebaseAdapter.UserViewHolder userViewHolder, final int i) {
        final Movies movies = list.get(i);
        userViewHolder.txt_film_adi.setText(movies.getFilm_ismi());
        userViewHolder.txt_film_puan.setText(movies.getFilm_puani());
        Picasso.get().load(movies.getFilm_image()).into(userViewHolder.txt_film_image);
        final Favorites favorites = new Favorites(context);
        if(!favorites.Kontrol(movies.getFilm_ismi())){
            userViewHolder.txt_fav.setImageResource(R.drawable.ic_favorite_ekli);
        }
        else{
            userViewHolder.txt_fav.setImageResource(R.drawable.ic_favorite);
        }
        userViewHolder.txt_fav.setOnClickListener(v -> {
            filmadi=list.get(i).getFilm_ismi();
            filmyili=list.get(i).getFilm_yili();
            filmpuani=list.get(i).getFilm_puani();
            filmozeti=list.get(i).getFilm_ozet();
            filmfoto=list.get(i).getFilm_image();
            filmyoutube=list.get(i).getFilm_youtube();
            filmsure=list.get(i).getFilm_sure();
            filmozeteng=list.get(i).getFilm_ozet_eng();
            filmsureeng=list.get(i).getFilm_sure_eng();
            textcolor=list.get(i).getFilm_color();
            filmoyuncular=list.get(i).getFilm_oyuncular();
            filmtur=list.get(i).getFilm_tur();
            filmtureng=list.get(i).getFilm_tur_eng();
            filmyonetmen=list.get(i).getFilm_yonetmen();
            filmsinif=list.get(i).getFilm_sinif();
            filmresimler=list.get(i).getFilm_resimler();
            if (favorites.Kontrol(filmadi)){
                favorites.ekle(filmadi,filmyili,filmpuani,filmfoto,filmyoutube,filmozeti,filmsure,filmozeteng,filmsureeng,textcolor,filmoyuncular,filmtur,filmtureng,filmyonetmen,filmsinif,filmresimler);
                favorites.close();
                Snackbar.make(v,v.getResources().getString(R.string.favoriekle),Snackbar.LENGTH_LONG).show();
                userViewHolder.txt_fav.setImageResource(R.drawable.ic_favorite_ekli);

            }else {
                favorites.deleteData(filmadi);
                Snackbar.make(v,v.getResources().getString(R.string.favoricikti),Snackbar.LENGTH_LONG).show();
                userViewHolder.txt_fav.setImageResource(R.drawable.ic_favorite);

            }
        });

        userViewHolder.txt_relative.setOnClickListener(v -> {
            sira=i;
            Intent detailsIntent = new Intent(context, DetailsActivity.class);
            detailsIntent.putExtra("film_ismi",movies.getFilm_ismi());
            detailsIntent.putExtra("film_oyuncular",movies.getFilm_oyuncular());
            detailsIntent.putExtra("film_ozet_eng",movies.getFilm_ozet_eng());
            detailsIntent.putExtra("film_puani",movies.getFilm_puani());
            detailsIntent.putExtra("film_resimler",movies.getFilm_resimler());
            detailsIntent.putExtra("film_sinif",movies.getFilm_sinif());
            detailsIntent.putExtra("film_sure_eng",movies.getFilm_sure_eng());
            detailsIntent.putExtra("film_tur",movies.getFilm_tur());
            detailsIntent.putExtra("film_tur_eng",movies.getFilm_tur_eng());
            detailsIntent.putExtra("film_yili",movies.getFilm_yili());
            detailsIntent.putExtra("film_yonetmen",movies.getFilm_yonetmen());
            detailsIntent.putExtra("film_image",movies.getFilm_image());
            detailsIntent.putExtra("film_ozet",movies.getFilm_ozet());
            detailsIntent.putExtra("film_sure",movies.getFilm_sure());
            detailsIntent.putExtra("film_color",movies.getFilm_color());
            detailsIntent.putExtra("film_youtube",movies.getFilm_youtube());
            context.startActivity(detailsIntent);
        });
    }

    public int getSira(){
        return sira;
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class UserViewHolder extends RecyclerView.ViewHolder{
        TextView txt_film_adi;
        TextView txt_film_puan;
        ImageView txt_film_image;
        ImageButton txt_fav;
        RelativeLayout txt_relative;


        private UserViewHolder(View itemView){
            super(itemView);

            txt_fav=itemView.findViewById(R.id.button_fav);
            txt_film_adi=itemView.findViewById(R.id.cardTitle1);
            txt_film_puan=itemView.findViewById(R.id.cardTitle2);
            txt_film_image=itemView.findViewById(R.id.cardPicture);
            txt_relative=itemView.findViewById(R.id.cardLayout);
        }
    }
}

Detay sayfası java dosyasını açıyoruz. Fab nesnesi ve veritabanı nesnesi oluşturuyoruz. Veritabanından kontrol edip FAB’daki ikonu değiştiriyoruz. Eğer ekli ise kırmızı ekli değilse beyaz ikon yapıyoruz. Kontrolden sonra click listener ekliyoruz. Eğer ekli ise silme işlemi yapıp ikonu değiştiriyoruz. Eğer ekli değil ise ekleyip ikonu değiştiriyoruz.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
public class DetailsActivity extends AppCompatActivity {

    private String ad,yil,puan,image,youtube,ozet,sure,ozet_eng,sure_eng,textcolor,oyuncular,tur,tur_eng,yonetmen,sinif,oyuncu1_resim,oyuncu2_resim,oyuncu3_resim,oyuncu4_resim,oyuncu5_resim,oyuncu6_resim,yonetmen_resim,resimler;
    private TextView oyuncuisim1,oyuncuisim2,oyuncuisim3,oyuncuisim4,oyuncuisim5,oyuncuisim6;
    private ImageView imageView;
    private CircleImageView image_yonetmen,oyuncuresim1,oyuncuresim2,oyuncuresim3,oyuncuresim4,oyuncuresim5,oyuncuresim6;
    private String[] oyuncu;
    private FloatingActionButton fab;
    private int sayac=0;
    private ImageView[] dots;
    private int dotscount;
    private Favorites favorites;
    private YouTubePlayerView youTubePlayerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_details);
        getExtra();
        favorites=new Favorites(DetailsActivity.this);
        final FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference reference_yonetmen = database.getReference("Yonetmenler");
        reference_yonetmen.keepSynced(true);
        DatabaseReference reference_oyuncu = database.getReference("Oyuncular");
        reference_oyuncu.keepSynced(true);
        image_yonetmen=findViewById(R.id.detayyonetmenresim);
        TextView textFilmYili = findViewById(R.id.detayYilDegisken);
        TextView textPuan = findViewById(R.id.detayPuan);
        TextView textOzet = findViewById(R.id.detayOzet);
        Toolbar toolbar = findViewById(R.id.detay_toolbar);
        setSupportActionBar(toolbar);
        ViewPager viewPager = findViewById(R.id.detay_viewpager);
        toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white_24dp);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
        ChipGroup chipGroup = findViewById(R.id.detaytur);
        imageView=findViewById(R.id.detayImage);
        TextView textSure = findViewById(R.id.detaySureDegisken);
        final TextView textYonetmen = findViewById(R.id.detayyonetmen);
        CollapsingToolbarLayout textFilmAdi = findViewById(R.id.collapsing_toolbar);
        ImageView image_aile = findViewById(R.id.detayaile);
        ImageView image_cinsellik = findViewById(R.id.detaycinsellik);
        ImageView image_olumsuz = findViewById(R.id.detayolumsuz);
        ImageView image_siddet = findViewById(R.id.detaysiddet);
        ImageView image_7 = findViewById(R.id.detay7);
        LinearLayout linearLayout = findViewById(R.id.detay_dots);
        ImageView image_13 = findViewById(R.id.detay13);
        ImageView image_15 = findViewById(R.id.detay15);
        ImageView image_18 = findViewById(R.id.detay18);
        youTubePlayerView =findViewById(R.id.detay_youtube_player_view);
        getLifecycle().addObserver(youTubePlayerView);
        oyuncuisim1=findViewById(R.id.detayoyuncu1);
        oyuncuisim2=findViewById(R.id.detayoyuncu2);
        oyuncuisim3=findViewById(R.id.detayoyuncu3);
        oyuncuisim4=findViewById(R.id.detayoyuncu4);
        oyuncuisim5=findViewById(R.id.detayoyuncu5);
        oyuncuisim6=findViewById(R.id.detayoyuncu6);
        oyuncuresim1=findViewById(R.id.detayoyuncuresim1);
        oyuncuresim2=findViewById(R.id.detayoyuncuresim2);
        oyuncuresim3=findViewById(R.id.detayoyuncuresim3);
        oyuncuresim4=findViewById(R.id.detayoyuncuresim4);
        oyuncuresim5=findViewById(R.id.detayoyuncuresim5);
        oyuncuresim6=findViewById(R.id.detayoyuncuresim6);
        RelativeLayout oyuncu1_relative = findViewById(R.id.detayoyuncuRelative1);
        RelativeLayout oyuncu2_relative = findViewById(R.id.detayoyuncuRelative2);
        RelativeLayout oyuncu3_relative = findViewById(R.id.detayoyuncuRelative3);
        RelativeLayout oyuncu4_relative = findViewById(R.id.detayoyuncuRelative4);
        RelativeLayout oyuncu5_relative = findViewById(R.id.detayoyuncuRelative5);
        RelativeLayout oyuncu6_relative = findViewById(R.id.detayoyuncuRelative6);
        RelativeLayout yonetmen_relative = findViewById(R.id.detayyonetmenRelative);
        fab=findViewById(R.id.detayFab);
        Button diger = findViewById(R.id.detaydiger);
        oyuncu=oyuncular.split(", ");
        String[] resim = resimler.split(", ");

        if(!favorites.Kontrol(ad)){
            Drawable favFab = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_favorite_ekli,getTheme());
            assert favFab != null;
            Drawable whiteFav = Objects.requireNonNull(favFab.getConstantState()).newDrawable();
            whiteFav.mutate().setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
            fab.setImageDrawable(whiteFav);
        }
        else{
            Drawable favFab = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_favorite_beyaz,getTheme());
            assert favFab != null;
            Drawable whiteFav = Objects.requireNonNull(favFab.getConstantState()).newDrawable();
            whiteFav.mutate().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
            fab.setImageDrawable(whiteFav);
        }

        fab.setOnClickListener(v -> {
            if (favorites.Kontrol(ad)){
                favorites.ekle(ad,yil,puan,image,youtube,ozet,sure,ozet_eng,sure_eng,textcolor,oyuncular,tur,tur_eng,yonetmen,sinif,resimler);
                Snackbar.make(v,getResources().getString(R.string.favoriekle),Snackbar.LENGTH_LONG).show();
                Drawable myFabSrc = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_favorite_ekli,getTheme());
                assert myFabSrc != null;
                Drawable willBeWhite = Objects.requireNonNull(myFabSrc.getConstantState()).newDrawable();
                willBeWhite.mutate().setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);
                fab.setImageDrawable(willBeWhite);
            }else {
                favorites.deleteData(ad);
                Snackbar.make(v,getResources().getString(R.string.favoricikti),Snackbar.LENGTH_LONG).show();
                Drawable myFabSrc = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_favorite_beyaz,getTheme());
                assert myFabSrc != null;
                Drawable willBeWhite = Objects.requireNonNull(myFabSrc.getConstantState()).newDrawable();
                willBeWhite.mutate().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
                fab.setImageDrawable(willBeWhite);
            }
        });

        imageView.setOnClickListener(v -> {
            Intent imageActivity = new Intent(DetailsActivity.this,ImageDetails.class);
            imageActivity.putExtra("image",image);
            startActivity(imageActivity);
        });

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(DetailsActivity.this, resim);
        viewPager.setAdapter(viewPagerAdapter);
        dotscount=viewPagerAdapter.getCount();
        dots=new ImageView[dotscount];
        for (int i=0;i<dotscount;i++){
            dots[i]=new ImageView(DetailsActivity.this);
            dots[i].setImageResource(R.drawable.ic_nonactive);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            params.setMargins(8,0,8,0);
            linearLayout.addView(dots[i],params);

        }
        dots[0].setImageResource(R.drawable.ic_active);
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                for(int i=0;i<dotscount;i++){
                    dots[i].setImageResource(R.drawable.ic_nonactive);
                }
                dots[position].setImageResource(R.drawable.ic_active);

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
            @Override
            public void onReady(@NonNull YouTubePlayer youTubePlayer) {
                youTubePlayer.cueVideo(youtube,0);
            }
        });

        String[] turler = tur.split(", ");
        String[] turler_eng = tur_eng.split(", ");

        for(sayac=0; sayac< turler.length; sayac++){
            if(Objects.equals(Locale.getDefault().getDisplayLanguage(),"English" )){
                final Chip chip = new Chip(chipGroup.getContext());
                chip.setText(turler_eng[sayac]);
                chip.setTextSize(14);
                chip.setOnClickListener(v -> {
                    Intent turactivity = new Intent(DetailsActivity.this, TurlerActivity.class);
                    ActivityOptions activityOptions=ActivityOptions.makeSceneTransitionAnimation(DetailsActivity.this);
                    turactivity.putExtra("tur",chip.getText());
                    startActivity(turactivity,activityOptions.toBundle());
                });
                chipGroup.addView(chip);
            }
            else{
                final Chip chip = new Chip(chipGroup.getContext());
                chip.setText(turler[sayac]);
                chip.setTextSize(14);
                chip.setOnClickListener(v -> {
                    Intent turactivity = new Intent(DetailsActivity.this,TurlerActivity.class);
                    ActivityOptions activityOptions=ActivityOptions.makeSceneTransitionAnimation(DetailsActivity.this);
                    turactivity.putExtra("tur",chip.getText());
                    startActivity(turactivity,activityOptions.toBundle());
                });
                chipGroup.addView(chip);
            }
        }

        diger.setOnClickListener(v -> {
            CustomDialogClass customDialogClass = new CustomDialogClass();
            Bundle bundle= new Bundle();
            bundle.putStringArray("oyuncular",oyuncu);
            customDialogClass.setArguments(bundle);
            customDialogClass.show(getSupportFragmentManager(),"Custom Dialog");
        });

        if(Objects.equals(Locale.getDefault().getDisplayLanguage(),"English" )){
            textSure.setText(sure_eng);
            textOzet.setText(ozet_eng);
        }
        else {
            textOzet.setText(ozet);
            textSure.setText(sure);
        }
        if(Objects.equals(textcolor,"evet")){
            int color = Color.parseColor("#000000");
            textFilmAdi.setExpandedTitleColor(color);
        }
        textYonetmen.setText(yonetmen);
        textFilmAdi.setTitle(ad);
        textFilmYili.setText(yil);
        textPuan.setText(puan);
        imageView.setOnClickListener(v -> {
            Intent imageActivity = new Intent(DetailsActivity.this,ImageDetails.class);
            imageActivity.putExtra("image",image);
            startActivity(imageActivity);
        });
        Picasso.get().load(image).networkPolicy(NetworkPolicy.OFFLINE).into(imageView, new Callback() {
            @Override
            public void onSuccess() {

            }

            @Override
            public void onError(Exception e) {
                Picasso.get().load(image).into(imageView);
            }
        });

        reference_yonetmen.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull final DataSnapshot dataSnapshot, @Nullable String s) {
                if(Objects.equals(yonetmen,Objects.requireNonNull(dataSnapshot.getValue(Yonetmen.class)).getYonetmen_adi())){
                    yonetmen_resim=Objects.requireNonNull(dataSnapshot.getValue(Yonetmen.class)).getYonetmen_resim_url();
                    Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Yonetmen.class)).getYonetmen_resim_url()).into(image_yonetmen, new Callback() {
                        @Override
                        public void onSuccess() {

                        }

                        @Override
                        public void onError(Exception e) {
                            Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Yonetmen.class)).getYonetmen_resim_url()).into(image_yonetmen);
                        }
                    });
                }
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        reference_oyuncu.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull final DataSnapshot dataSnapshot, @Nullable String s) {
                for(sayac=0;sayac<6;sayac++){
                    if(Objects.equals(oyuncu[sayac],Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_adi())){
                        if(Objects.equals(oyuncuisim1.getText(),getResources().getString(R.string.degisken))){
                            oyuncuisim1.setText(oyuncu[sayac]);
                            oyuncu1_resim=Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url();
                            Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).networkPolicy(NetworkPolicy.OFFLINE).into(oyuncuresim1, new Callback() {
                                @Override
                                public void onSuccess() {

                                }

                                @Override
                                public void onError(Exception e) {
                                    Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).into(oyuncuresim1);
                                }
                            });
                        }
                        else if(Objects.equals(oyuncuisim2.getText(),getResources().getString(R.string.degisken))){
                            oyuncuisim2.setText(oyuncu[sayac]);
                            oyuncu2_resim=Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url();
                            Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).networkPolicy(NetworkPolicy.OFFLINE).into(oyuncuresim2, new Callback() {
                                @Override
                                public void onSuccess() {

                                }

                                @Override
                                public void onError(Exception e) {
                                    Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).into(oyuncuresim2);
                                }
                            });
                        }
                        else if(Objects.equals(oyuncuisim3.getText(),getResources().getString(R.string.degisken))){
                            oyuncuisim3.setText(oyuncu[sayac]);
                            oyuncu3_resim=Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url();
                            Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).networkPolicy(NetworkPolicy.OFFLINE).into(oyuncuresim3, new Callback() {
                                @Override
                                public void onSuccess() {

                                }

                                @Override
                                public void onError(Exception e) {
                                    Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).into(oyuncuresim3);
                                }
                            });
                        }
                        else if(Objects.equals(oyuncuisim4.getText(),getResources().getString(R.string.degisken))){
                            oyuncuisim4.setText(oyuncu[sayac]);
                            oyuncu4_resim=Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url();
                            Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).networkPolicy(NetworkPolicy.OFFLINE).into(oyuncuresim4, new Callback() {
                                @Override
                                public void onSuccess() {

                                }

                                @Override
                                public void onError(Exception e) {
                                    Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).into(oyuncuresim4);
                                }
                            });

                        }
                        else if(Objects.equals(oyuncuisim5.getText(),getResources().getString(R.string.degisken))){
                            oyuncuisim5.setText(oyuncu[sayac]);
                            oyuncu5_resim=Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url();
                            Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).networkPolicy(NetworkPolicy.OFFLINE).into(oyuncuresim5, new Callback() {
                                @Override
                                public void onSuccess() {

                                }

                                @Override
                                public void onError(Exception e) {
                                    Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).into(oyuncuresim5);
                                }
                            });

                        }
                        else if(Objects.equals(oyuncuisim6.getText(),getResources().getString(R.string.degisken))){
                            oyuncuisim6.setText(oyuncu[sayac]);
                            oyuncu6_resim=Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url();
                            Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).networkPolicy(NetworkPolicy.OFFLINE).into(oyuncuresim6, new Callback() {
                                @Override
                                public void onSuccess() {

                                }

                                @Override
                                public void onError(Exception e) {
                                    Picasso.get().load(Objects.requireNonNull(dataSnapshot.getValue(Oyuncu.class)).getOyuncu_resim_url()).into(oyuncuresim6);
                                }
                            });
                        }
                    }
                }
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        sinif=sinif.replace(",","");
        if(sinif.contains("Cinsellik")){
            image_cinsellik.setVisibility(View.VISIBLE);
            image_cinsellik.setOnClickListener(v -> Snackbar.make(v,getResources().getString(R.string.cinsellik),Snackbar.LENGTH_LONG).show());
        }
        else{
            image_cinsellik.setVisibility(View.GONE);
        }
        if(sinif.contains("Şiddet")){
            image_siddet.setVisibility(View.VISIBLE);
            image_siddet.setOnClickListener(v -> Snackbar.make(v,getResources().getString(R.string.siddet),Snackbar.LENGTH_LONG).show());
        }
        else{
            image_siddet.setVisibility(View.GONE);
        }
        if(sinif.contains("Olumsuz")){
            image_olumsuz.setVisibility(View.VISIBLE);
            image_olumsuz.setOnClickListener(v -> Snackbar.make(v,getResources().getString(R.string.olmsuz),Snackbar.LENGTH_LONG).show());
        }
        else{
            image_olumsuz.setVisibility(View.GONE);
        }
        if(sinif.contains("Aile")){
            image_aile.setVisibility(View.VISIBLE);
            image_aile.setOnClickListener(v -> Snackbar.make(v,getResources().getString(R.string.aile),Snackbar.LENGTH_LONG).show());
        }
        else{
            image_aile.setVisibility(View.GONE);
        }
        if(sinif.contains("7")){
            image_7.setVisibility(View.VISIBLE);
            image_7.setOnClickListener(v -> Snackbar.make(v,getResources().getString(R.string.yas7),Snackbar.LENGTH_LONG).show());
        }
        else{
            image_7.setVisibility(View.GONE);
        }
        if(sinif.contains("13")){
            image_13.setVisibility(View.VISIBLE);
            image_13.setOnClickListener(v -> Snackbar.make(v,getResources().getString(R.string.yas13),Snackbar.LENGTH_LONG).show());
        }
        else{
            image_13.setVisibility(View.GONE);
        }
        if(sinif.contains("15")){
            image_15.setVisibility(View.VISIBLE);
            image_15.setOnClickListener(v -> Snackbar.make(v,getResources().getString(R.string.yas15),Snackbar.LENGTH_LONG).show());
        }
        else{
            image_15.setVisibility(View.GONE);
        }
        if(sinif.contains("18")){
            image_18.setVisibility(View.VISIBLE);
            image_18.setOnClickListener(v -> Snackbar.make(v,getResources().getString(R.string.yas18),Snackbar.LENGTH_LONG).show());
        }
        else{
            image_18.setVisibility(View.GONE);
        }
        oyuncu1_relative.setOnClickListener(v -> {
            Intent oyuncu1 = new Intent(DetailsActivity.this,TurlerActivity.class);
            oyuncu1.putExtra("oyuncu",oyuncuisim1.getText());
            oyuncu1.putExtra("image",oyuncu1_resim);
            startActivity(oyuncu1);
        });
        oyuncu2_relative.setOnClickListener(v -> {
            Intent oyuncu2 = new Intent(DetailsActivity.this,TurlerActivity.class);

            oyuncu2.putExtra("oyuncu",oyuncuisim2.getText());
            oyuncu2.putExtra("image",oyuncu2_resim);
            startActivity(oyuncu2);            });
        oyuncu3_relative.setOnClickListener(v -> {
            Intent oyuncu3 = new Intent(DetailsActivity.this,TurlerActivity.class);
            oyuncu3.putExtra("oyuncu",oyuncuisim3.getText());
            oyuncu3.putExtra("image",oyuncu3_resim);
            startActivity(oyuncu3);            });
        oyuncu4_relative.setOnClickListener(v -> {
            Intent oyuncu4 = new Intent(DetailsActivity.this,TurlerActivity.class);
            oyuncu4.putExtra("oyuncu",oyuncuisim4.getText());
            oyuncu4.putExtra("image",oyuncu4_resim);
            startActivity(oyuncu4);            });
        oyuncu5_relative.setOnClickListener(v -> {
            Intent oyuncu5 = new Intent(DetailsActivity.this,TurlerActivity.class);
            oyuncu5.putExtra("oyuncu",oyuncuisim5.getText());
            oyuncu5.putExtra("image",oyuncu5_resim);
            startActivity(oyuncu5);            });
        oyuncu6_relative.setOnClickListener(v -> {
            Intent oyuncu6 = new Intent(DetailsActivity.this,TurlerActivity.class);
            oyuncu6.putExtra("oyuncu",oyuncuisim6.getText());
            oyuncu6.putExtra("image",oyuncu6_resim);
            startActivity(oyuncu6);            });
        yonetmen_relative.setOnClickListener(v -> {
            Intent yonetmen = new Intent(DetailsActivity.this,TurlerActivity.class);
            yonetmen.putExtra("yonetmen",textYonetmen.getText());
            yonetmen.putExtra("image",yonetmen_resim);
            startActivity(yonetmen);            });
    }

    private void getExtra(){
        ad = getIntent().getStringExtra("ad");
        yil=getIntent().getStringExtra("yil");
        puan=getIntent().getStringExtra("puan");
        image = getIntent().getStringExtra("image");
        youtube = getIntent().getStringExtra("youtube");
        ozet = getIntent().getStringExtra("ozet");
        sure=getIntent().getStringExtra("sure");
        ozet_eng=getIntent().getStringExtra("ozet_eng");
        sure_eng=getIntent().getStringExtra("sure_eng");
        textcolor=getIntent().getStringExtra("color");
        oyuncular=getIntent().getStringExtra("oyuncular");
        tur=getIntent().getStringExtra("tur");
        tur_eng=getIntent().getStringExtra("tur_eng");
        yonetmen=getIntent().getStringExtra("yonetmen");
        sinif=getIntent().getStringExtra("sinif");
        resimler=getIntent().getStringExtra("resimler");
    }
}

History dosyasını açıyoruz. OnResume methodu ekliyoruz. Bu method ile detay sayfasından döndüğümüzde işlem yapacağız. Geri dönüldüğü zaman gidilen kartın numarasını alıp adapter’a bu nesnenin değişmiş olabileceğini bildiriyoruz. Bu sayede eğer orada beğenme işlemi yapıldı ise karttaki beğenme butonu değişiyor.

1
2
3
4
5
@Override
public void onResume() {
    super.onResume();
    adapter.notifyItemChanged(adapter.getSira());
}

Favoriler java dosyasını açıyoruz. Gerekli nesneleri oluşturuyoruz. Recyclerview’a adapter ve layout manager veriyoruz. Eğer veritabanı boş ise bildirim çıkarıyoruz. History dosyasındaki gibi onResume methodu ekliyoruz. Ama buradaki biraz daha karmaşık olacak. İlk önce veritabanının boş olup olmadığına bakıyoruz. Bunu sayfa ilk eklendiğinde ve veritabanı boş olduğunda hata vermemesi için yapıyoruz. Ardından işlem yapılan filmin veritabanında ekli olup olmadığına bakıyoruz. Ekli değil ise işlem yapıyoruz çünkü detay sayfasında filmi veritabanından çıkarmıştık. Filmi veritabanı listesinden çıkarıyoruz. Adapter’ı uyarıyoruz. Son olarak hangi item’da işlem yaptığımızı bildiriyoruz.

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
public class FavoritesFragment extends Fragment {

    private RecyclerAdapter adapter;

    private List<Model> dbList;

    private Favorites favori;

    private RecyclerView recyclerView;

    public FavoritesFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_favorites, container, false);

        favori = new Favorites(v.getContext());
        dbList = favori.getDataFromDB();
        recyclerView = v.findViewById(R.id.firebaselist);
        recyclerView.setHasFixedSize(true);
        final LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(linearLayoutManager);

        adapter = new RecyclerAdapter(v.getContext(),dbList);
        recyclerView.setAdapter(adapter);
        if(dbList.isEmpty()){
            Snackbar.make(v,getResources().getString(R.string.favoribos),Snackbar.LENGTH_LONG).show();
        }

        return v;
    }

    @Override
    public void onResume() {
        if(!dbList.isEmpty()){
            if(favori.Kontrol(dbList.get(adapter.getSira()).getFilm_adi())){
                dbList.remove(adapter.getSira());
                adapter.notifyDataSetChanged();
                adapter.notifyItemRangeChanged(adapter.getSira(),adapter.getItemCount());
            }
        }
        super.onResume();
    }
}

Telefonumuzu bilgisayara bağlayıp kodumuzu test ediyoruz.

This post is licensed under CC BY 4.0 by the author.