Gönderiler Android Activity Arası Bilgi Aktarımı
Post
Vazgeç

Android Activity Arası Bilgi Aktarımı

Uygulamamızı yaparken kodlarımızın daha derli toplu olması için java dosyalarımızı klasörlere koyabiliriz. Klasör oluşturmak için java dosyalarının bulunduğu klasöre gelip sağ tıklıyoruz. New seçeneğinin altında package seçeneğini seçiyoruz. Klasör adını yazıp devam ediyoruz. İstediğimiz java dosyasını bu klasöre sürükleyip bırakabiliriz. Ben klasör olarak utils oluşturacağım. İçinde fragment veya activity dosyaları hariç oluşturacağımız dosyalar bulunacak. Daha önceden oluşturduğumuz model ve adapter dosyalarını bu klasöre taşıyoruz.

Şu an kullandığımız veritabanı model sınıfı sadece deneme amaçlı oluşturduğumuz bir sınıftır. Uygulamamızda daha detaylı bir model sınıfı kullanacağız. Veritabanımızda filmin adını, yapım yılını, oyuncularını, puanını, resimlerini, sınıflandırmasını, yönetmenini, posterini, Youtube linkini tutacağız. Filmin İngilizce ve Türkçe olarak özetini, türünü ve süresini tutacağız. Son olarak resmimizin tonunun beyaz mı olup olmadığının değerini tutacağız. Şimdi model sınıfına eklemeler yapacağız. Bunun için Android Studio’da model sınıfının olduğu java dosyasını açıyoruz. Şu an sadece film isminin değişkeni var. Aşağıda bahsedeceğim değişkenleri string tipinde ekliyoruz. Bu değişkenler film_oyuncular, film_ozet_eng, film_puani, film_resimler, film_sinif, film_sure_eng, film_tur, film_tur_eng, film_yili, film_yonetmen, film_image, film_ozet, film_sure, film_color ve film_youtube. Bunları ekledikten sonra kurucu fonksiyonu eklediğimiz değişkenleri alacak şekilde değiştiriyoruz. Fonksiyonu ayarladıktan sonra değişkenler için getter ve setter fonksiyonlarını ayarlıyoruz. Model sınıfı ile işimiz burada bitiyor.

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
public class Movies {

    private String film_ismi, film_oyuncular, film_ozet_eng, film_puani, film_resimler, film_sinif, film_sure_eng, film_tur, film_tur_eng, film_yili, 
            film_yonetmen, film_image, film_ozet, film_sure, film_color, film_youtube;

    public Movies(){}

    public Movies(String film_ismi,String film_oyuncular,String film_ozet_eng,String film_puani,String film_resimler,String film_sinif,String film_sure_eng,String film_tur,String film_tur_eng,String film_yili,String film_yonetmen,String film_image,String film_ozet,String film_sure,String film_color,String film_youtube){
        this.film_ismi=film_ismi;
        this.film_oyuncular=film_oyuncular;
        this.film_ozet_eng=film_ozet_eng;
        this.film_puani=film_puani;
        this.film_resimler=film_resimler;
        this.film_sinif=film_sinif;
        this.film_sure_eng=film_sure_eng;
        this.film_tur=film_tur;
        this.film_tur_eng=film_tur_eng;
        this.film_yili=film_yili;
        this.film_yonetmen=film_yonetmen;
        this.film_image=film_image;
        this.film_ozet=film_ozet;
        this.film_sure=film_sure;
        this.film_color=film_color;
        this.film_youtube=film_youtube;        
    }

    public String getFilm_oyuncular() {
        return film_oyuncular;
    }

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

    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_puani() {
        return film_puani;
    }

    public void setFilm_puani(String film_puani) {
        this.film_puani = film_puani;
    }

    public String getFilm_resimler() {
        return film_resimler;
    }

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

    public String getFilm_sinif() {
        return film_sinif;
    }

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

    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 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_yili() {
        return film_yili;
    }

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

    public String getFilm_yonetmen() {
        return film_yonetmen;
    }

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

    public String getFilm_image() {
        return film_image;
    }

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

    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_color() {
        return film_color;
    }

    public void setFilm_color(String film_color) {
        this.film_color = film_color;
    }

    public String getFilm_youtube() {
        return film_youtube;
    }

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

    public String getFilm_ismi() {
        return film_ismi;
    }

    public void setFilm_ismi(String film_ismi) {
        this.film_ismi = film_ismi;
    }
}

Tasarımdan sonra arama sayfasının java dosyasını açıyoruz. Gerekli nesneleri oluşturuyoruz. Edittext’lere key listener ekliyoruz. Böylelikle eğer kullanıcı enter tuşuna basarsa arama yapabiliyoruz. Arama kısmında edittext’ten girilen değerleri string tipinde değişken olarak alıyoruz. Chip’lerin string tipindeki değişkenlerini null yapıyoruz. Chip’lerin seçilip seçilmediğine bakıyoruz. Eğer seçili ise seçili Chip’in değişkenini dolduruyoruz. Eğer seçili değilse null olarak kalıyor. Fragment’dan fragment’ta değer gönderirken bundle kullanıyoruz. Bir bundle oluşturup içine değişkenleri koyuyoruz. Herhangi bir değerin girilip girilmediğine bakıyoruz. Eğer kullanıcı değer girmedi ise kullanıcıya uyarı çıkarıyoruz. Eğer değer girili ise arama sonucu sayfasına yönlendiriyoruz. Burada addtobackstack ile fragment’ın stack’e eklenmesini sağlıyoruz. Bu sayede kullanıcı geri tuşuna bastığı zaman uygulamadan çıkmak yerine arama sayfasına geri gelecektir. Arama kısmının java dosyasında işimiz burada bitiyor.

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

    private Chip action,adventure,crime,mystery,drama,thriller,science,fantasy,western,war,comedy,history;
    private SearchResultFragment searchResultFragment;
    private EditText film_adi,film_yonetmen,film_oyuncu;
    private String actionS,adventureS,scienceS,fantasyS,thrillerS,dramaS,crimeS,mysteryS,westernS,warS,comedyS,historyS;

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

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

        FloatingActionButton button = v.findViewById(R.id.buttonsearch);
        searchResultFragment=new SearchResultFragment();
        action=v.findViewById(R.id.searchturaction);
        adventure=v.findViewById(R.id.searchturadventure);
        science=v.findViewById(R.id.searchturscience);
        fantasy=v.findViewById(R.id.searchturfantasy);
        thriller=v.findViewById(R.id.searchturthriller);
        drama=v.findViewById(R.id.searchturdrama);
        crime=v.findViewById(R.id.searchturcrime);
        mystery=v.findViewById(R.id.searchturmystery);
        western=v.findViewById(R.id.searchturwestern);
        war=v.findViewById(R.id.searchturwar);
        comedy=v.findViewById(R.id.searchturcomedy);
        history=v.findViewById(R.id.searchturhistory);
        film_adi=v.findViewById(R.id.searchedit1);
        film_yonetmen=v.findViewById(R.id.searchedit2);
        film_oyuncu=v.findViewById(R.id.searchedit3);
        film_adi.setOnKeyListener((v1, keyCode, event) -> {
            if ((keyCode == KeyEvent.KEYCODE_ENTER)) {
                Search();
                return true;
            }
            return false;
        });

        film_oyuncu.setOnKeyListener((v12, keyCode, event) -> {
            if ((keyCode == KeyEvent.KEYCODE_ENTER)) {
                Search();
                return true;
            }
            return false;
        });

        film_yonetmen.setOnKeyListener((v13, keyCode, event) -> {
            if ((keyCode == KeyEvent.KEYCODE_ENTER)) {
                Search();
                return true;
            }
            return false;
        });

        button.setOnClickListener(v14 -> Search());
        return v;
    }

    private void Doldurma(){
        if(action.isChecked()){
            actionS=getResources().getString(R.string.turaction);
        }
        if(adventure.isChecked()){
            adventureS= getResources().getString(R.string.turadventure);
        }
        if(science.isChecked()){
            scienceS= getResources().getString(R.string.turscience);
        }
        if(fantasy.isChecked()){
            fantasyS = getResources().getString(R.string.turfantasy);
        }
        if(thriller.isChecked()){
            thrillerS= getResources().getString(R.string.turthriller);
        }
        if(drama.isChecked()){
            dramaS= getResources().getString(R.string.turdrama);
        }
        if(crime.isChecked()){
            crimeS= getResources().getString(R.string.turcrime);
        }
        if(mystery.isChecked()){
            mysteryS= getResources().getString(R.string.turmystery);
        }
        if(western.isChecked()){
            westernS=getResources().getString(R.string.turwestern);
        }
        if(war.isChecked()){
            warS=getResources().getString(R.string.turwar);
        }
        if(comedy.isChecked()){
            comedyS=getResources().getString(R.string.turcomedy);
        }
        if(history.isChecked()){
            historyS=getResources().getString(R.string.turhistory);
        }
    }

    private void Search(){
        String filmadi = film_adi.getText().toString();
        String yonetmen = film_yonetmen.getText().toString();
        String oyuncu = film_oyuncu.getText().toString();
        actionS = null ;
        adventureS=null;
        scienceS=null;
        fantasyS=null;
        thrillerS=null;
        dramaS=null;
        crimeS=null;
        mysteryS=null;
        westernS=null;
        warS=null;
        comedyS=null;
        historyS=null;
        Bundle bundle = new Bundle();
        bundle.putString("adi",filmadi);
        bundle.putString("yonetmen",yonetmen);
        bundle.putString("oyuncu",oyuncu);
        Doldurma();
        bundle.putString("action",actionS);
        bundle.putString("adventure",adventureS);
        bundle.putString("science",scienceS);
        bundle.putString("fantasy",fantasyS);
        bundle.putString("thriller",thrillerS);
        bundle.putString("drama",dramaS);
        bundle.putString("crime",crimeS);
        bundle.putString("mystery",mysteryS);
        bundle.putString("western",westernS);
        bundle.putString("war",warS);
        bundle.putString("comedy",comedyS);
        bundle.putString("history",historyS);
        searchResultFragment.setArguments(bundle);
        if(!TextUtils.isEmpty(filmadi) || !TextUtils.isEmpty(yonetmen) || !TextUtils.isEmpty(oyuncu) || action.isChecked() || adventure.isChecked() || science.isChecked() || fantasy.isChecked()
                || thriller.isChecked() || drama.isChecked() || crime.isChecked() || mystery.isChecked() || western.isChecked()
                || war.isChecked() || comedy.isChecked() || history.isChecked()){
            Objects.requireNonNull(getActivity()).getSupportFragmentManager().beginTransaction()
                    .replace(R.id.main_frame,searchResultFragment,"Result")
                    .addToBackStack(null).commit();
        }
        else{
            Snackbar.make(Objects.requireNonNull(getView()),getResources().getString(R.string.degergir),Snackbar.LENGTH_LONG).show();
        }
    }
}

Uygulamamızda resim göstermek Picasso adlı kütüphaneyi kullanacağız. Bu adrese gidiyoruz. Açıklama kısmında bize Gradle kodu veriliyor. Bu kodu alıp app build.gradle dosyasında depencies kısmına ekliyoruz.

Kart tasarımımızı değiştireceğiz. Kartımızda filmin resmi, adı, puanı olacak. Bunun için kartın layout dosyasını açıyoruz. Bir adet imageview ve 2 adet text view ekliyoruz. Filmin puanının önüne bir tane yıldız resmi koyacağız. Drawable klasörüne yıldız simgesi ekliyoruz. Aşağıda kodu paylaşıyorum. Kodda sadece daha önce açıklamadığım kısımları açıklayacağım. Cardview içindeki cardusecompatpadding ile kartın dışına boşluk veriyoruz. Böylelikle kartların arası daha boşluklu oluyor ve gölgeler daha belirgin oluyor. Cardelevation kartın arka plandan ne kadar yüksekte olacağını ayarlıyorsunuz. Bir bakıma kartın gölgelendirmesinin ayarı oluyor. Cardcornerradius ile kartın kenarlarının kıvrım değerini ayarlıyorsunuz. Imageview içine gelirsek scaletype ile resmin x ve y düzlemlerini sığdır diyoruz. Craptopadding ile sığdırmak için resmi kesmeyeceğimizi belirtiyoruz. Adjustviewbounds ile imageview’ın kendi boyutlarını resme göre ayarlamasına izin veriyoruz. AlignParentStart ile imageview’ın parent’ı ile sol taraftan aynı yerde başlamasını istiyoruz. Textview içinedeki textappearance değeri ile textview içindeki yazıyı karşısındaki değerdeki özelliğe göre ayarlamasını istiyoruz. Bu değeri ben internette material design sitesinde buldum.

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
<android.support.v7.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"
            />
    </RelativeLayout>
</android.support.v7.widget.CardView>

Daha önce veritabanı model sınıfını düzenlemiştik. Şimdi ekleme sayfasının tasarımını ve java dosyasını düzenleyeceğiz. İlk önce tasarımını değiştireceğiz. Ekleme activity’sinin layout dosyasını açıyoruz. Aşağıdaki kodu ekliyoruz. Burada scrollview sayesinde sayfada aşağıya doğru kaydırma yapabiliyoruz. Film hakkında tutacağımız bütün bilgiler için textview ile bir açıklama yazıyoruz ve karşısına edittext ile girdi alıyoruz. Textview’deki yazılar için projemizde string değerlerinin tutulu olduğu dosyaya yeni girdiler ekliyoruz ve bu değerleri textview’e veriyoruz.

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
<RelativeLayout
    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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".AddActivity">

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        >
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView
                android:id="@+id/textviewAd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/film_adi"
                android:textSize="24sp"
                android:layout_alignParentStart="true"
                android:layout_marginStart="5dp"
                />
            <TextView
                android:id="@+id/textviewOyuncular"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/addoyuncular"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_below="@id/textviewAd"
                android:layout_alignStart="@id/textviewAd"
                />
            <TextView
                android:id="@+id/textviewOzetEng"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/ozetingilizce"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewOyuncular"
                android:layout_below="@id/textviewOyuncular"
                />
            <TextView
                android:id="@+id/textviewPuan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/film_puani"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewOzetEng"
                android:layout_below="@id/textviewOzetEng"
                />
            <TextView
                android:id="@+id/textviewResimler"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/addresimler"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewPuan"
                android:layout_below="@id/textviewPuan"
                />
            <TextView
                android:id="@+id/textviewSinif"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/addsinif"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewResimler"
                android:layout_below="@id/textviewResimler"
                />
            <TextView
                android:id="@+id/textviewSureEng"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sureingilizce"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewSinif"
                android:layout_below="@id/textviewSinif"
                />
            <TextView
                android:id="@+id/textviewTur"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/addtur"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewSureEng"
                android:layout_below="@id/textviewSureEng"
                />
            <TextView
                android:id="@+id/textviewTurEng"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/addtureng"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewTur"
                android:layout_below="@id/textviewTur"
                />
            <TextView
                android:id="@+id/textviewYil"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/film_yili"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewTurEng"
                android:layout_below="@id/textviewTurEng"
                />
            <TextView
                android:id="@+id/textviewYonetmen"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/addyonetmen"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewYil"
                android:layout_below="@id/textviewYil"
                />
            <TextView
                android:id="@+id/textviewImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/resim_url"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewYonetmen"
                android:layout_below="@id/textviewYonetmen"
                />
            <TextView
                android:id="@+id/textviewOzet"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/ozet"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewImage"
                android:layout_below="@id/textviewImage"
                />
            <TextView
                android:id="@+id/textviewSure"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/sure"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewOzet"
                android:layout_below="@id/textviewOzet"
                />
            <TextView
                android:id="@+id/textviewColor"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/addtextcolor"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewSure"
                android:layout_below="@id/textviewSure"
                />
            <TextView
                android:id="@+id/textviewYoutube"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/youtube_url"
                android:textSize="24sp"
                android:layout_marginTop="34dp"
                android:layout_alignStart="@id/textviewColor"
                android:layout_below="@id/textviewColor"
                />

            <EditText
                android:id="@+id/edittextAd"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_marginTop="8dp"
                android:layout_marginStart="80dp"
                android:layout_toEndOf="@id/textviewAd"
                android:layout_alignBottom="@id/textviewAd"
                />
            <EditText
                android:id="@+id/edittextOyuncular"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextAd"
                android:layout_alignBottom="@id/textviewOyuncular"
                android:layout_toEndOf="@id/textviewOyuncular"
                />
            <EditText
                android:id="@+id/edittextOzetEng"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextOyuncular"
                android:layout_alignBottom="@id/textviewOzetEng"
                android:layout_toEndOf="@id/textviewOzetEng"
                />
            <EditText
                android:id="@+id/edittextPuan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextOzetEng"
                android:layout_alignBottom="@id/textviewPuan"
                android:layout_toEndOf="@id/textviewPuan"
                />
            <EditText
                android:id="@+id/edittextResimler"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextPuan"
                android:layout_alignBottom="@id/textviewResimler"
                android:layout_toEndOf="@id/textviewResimler"
                />
            <EditText
                android:id="@+id/edittextSinif"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextResimler"
                android:layout_alignBottom="@id/textviewSinif"
                android:layout_toEndOf="@id/textviewSinif"
                />
            <EditText
                android:id="@+id/edittextSureEng"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextSinif"
                android:layout_alignBottom="@id/textviewSureEng"
                android:layout_toEndOf="@id/textviewSureEng"
                />
            <EditText
                android:id="@+id/edittextTur"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextSureEng"
                android:layout_alignBottom="@id/textviewTur"
                android:layout_toEndOf="@id/textviewTur"
                />
            <EditText
                android:id="@+id/edittextTurEng"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextTur"
                android:layout_alignBottom="@id/textviewTurEng"
                android:layout_toEndOf="@id/textviewTurEng"
                />
            <EditText
                android:id="@+id/edittextYil"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignBottom="@id/textviewYil"
                android:layout_alignStart="@id/edittextTurEng"
                android:layout_toEndOf="@id/textviewYil"
                />
            <EditText
                android:id="@+id/edittextYonetmen"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextYil"
                android:layout_alignBottom="@id/textviewYonetmen"
                android:layout_toEndOf="@id/textviewYonetmen"
                />
            <EditText
                android:id="@+id/edittextImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextYonetmen"
                android:layout_alignBottom="@id/textviewImage"
                android:layout_toEndOf="@id/textviewImage"
                />
            <EditText
                android:id="@+id/edittextOzet"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextImage"
                android:layout_alignBottom="@id/textviewOzet"
                android:layout_toEndOf="@id/textviewOzet"
                />
            <EditText
                android:id="@+id/edittextSure"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextOzet"
                android:layout_alignBottom="@id/textviewSure"
                android:layout_toEndOf="@id/textviewSure"
                />
            <EditText
                android:id="@+id/edittextColor"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextSure"
                android:layout_alignBottom="@id/textviewColor"
                android:layout_toEndOf="@id/textviewColor"
                />
            <EditText
                android:id="@+id/edittextYoutube"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text"
                android:layout_alignStart="@id/edittextColor"
                android:layout_alignBottom="@id/textviewYoutube"
                android:layout_toEndOf="@id/textviewYoutube"
                />
        </RelativeLayout>
    </ScrollView>
    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_check_black_24dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="25dp"
        android:id="@+id/fab"
        app:fabSize="normal"/>
</RelativeLayout>

Addactivity’nin java dosyasını açıyoruz. Yeni eklediğimiz edittext’ler için nesneler oluşturuyoruz ve bu nesneleri layout dosyasındaki ögeler ile ilişkilendiriyoruz. Ardından butona basıldığında bu değerleri string değerlere aktarıyoruz. Aktarım sonrası model sınıfından bir nesne oluşturup bu değerleri sınıfın methoduna gönderiyoruz. Bu methodu veritabanı referansı ile veritabanına yüklü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
public class AddActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);
        final EditText editAd= findViewById(R.id.edittextAd);
        final EditText editOyuncular= findViewById(R.id.edittextOyuncular);
        final EditText editOzetEng= findViewById(R.id.edittextOzetEng);
        final EditText editPuan= findViewById(R.id.edittextPuan);
        final EditText editResimler= findViewById(R.id.edittextResimler);
        final EditText editSinif= findViewById(R.id.edittextSinif);
        final EditText editSureEng= findViewById(R.id.edittextSureEng);
        final EditText editTur= findViewById(R.id.edittextTur);
        final EditText editTurEng= findViewById(R.id.edittextTurEng);
        final EditText editYil= findViewById(R.id.edittextYil);
        final EditText editYonetmen= findViewById(R.id.edittextYonetmen);
        final EditText editImage= findViewById(R.id.edittextImage);
        final EditText editOzet= findViewById(R.id.edittextOzet);
        final EditText editSure= findViewById(R.id.edittextSure);
        final EditText editColor= findViewById(R.id.edittextColor);
        final EditText editYoutube = findViewById(R.id.edittextYoutube);

        FloatingActionButton fab=findViewById(R.id.fab);
        final DatabaseReference reference= FirebaseDatabase.getInstance().getReference("Filmler");

        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String film_adi=editAd.getText().toString();
                String film_oyuncular=editOyuncular.getText().toString();
                String film_ozet_eng=editOzetEng.getText().toString();
                String film_puani=editPuan.getText().toString();
                String film_resimler=editResimler.getText().toString();
                String film_sinif=editSinif.getText().toString();
                String film_sure_eng=editSureEng.getText().toString();
                String film_tur=editTur.getText().toString();
                String film_tur_eng=editTurEng.getText().toString();
                String film_yili=editYil.getText().toString();
                String film_yonetmen=editYonetmen.getText().toString();
                String film_image=editImage.getText().toString();
                String film_ozet=editOzet.getText().toString();
                String film_sure=editSure.getText().toString();
                String film_color=editColor.getText().toString();
                String film_youtube=editYoutube.getText().toString();

                Movies movies=new Movies(film_adi,film_oyuncular,film_ozet_eng,film_puani,film_resimler,film_sinif,film_sure_eng,film_tur,film_tur_eng,film_yili,film_yonetmen,film_image,film_ozet,film_sure,film_color,film_youtube);
                reference.push().setValue(movies);
                finish();
            }
        });
    }
}

Recyclerview adaptar’ımızı ayarlamamız gerekiyor çünkü eski kart tasarımına göre ayarlı şuanda. Adapter dosyamızı açıyoruz. En altta userviewholder içinde 1 adet textview nesnesi ve 1 adet imageview nesnesi oluşturuyoruz. Bu nesneleri kart layout dosyasındaki ögelere ilişkilendiriyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class UserViewHolder extends RecyclerView.ViewHolder{
        TextView txt_film_adi;
        TextView txt_film_puan;
        ImageView txt_film_image;


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

            txt_film_adi=itemView.findViewById(R.id.cardTitle1);
            txt_film_puan=itemView.findViewById(R.id.cardTitle2);
            txt_film_image=itemView.findViewById(R.id.cardPicture);

        }
    }

Onbindviewholder içine geliyoruz. Daha önce film ismine yaptığımız gibi film puanı nesnesine listedeki film puanını yüklüyoruz. Ardından Picasso kütüphanesi ile resmimizi imageview’e yüklüyoruz. Resmimizi veritabanımızda url olarak saklayacağız. Aşağıdaki kodda görüldüğü gibi resmimizi url’den imageview’e yüklüyoruz. Burada get ile Picasso’yu çağırıyoruz. Load ile url’yi yüklüyoruz. Into ile resmin yükleneceği nesneyi veriyoruz.

1
2
3
4
5
6
7
@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);
    }

Filmin detaylarının gösterileceği sayfayı yapacağız. Bunun için bir tane activity ekleyeceğiz. Activity ismi DetailsActivity olacak. Activity’yi oluşturduktan sonra tasarım dosyasını açıyoruz. Kodu aşağıda vereceğim. Daha önce bahsetmediğim yerleri açıklayacağım. Öncelikle detay sayfamız şu an için tam olmayacak. İçinde youtube, oyuncular, yonetmen, sınıflandırma, türler, resimler bölümleri ve beğenme butonu olmayacak. Bunları daha sonra ekleyeceğiz.

Fitssystemwindows ile uygulamamız durum çubuğunun üstünde çalışabilecektir. Yani durum çubuğu gözükecek ama bize engel teşkil etmeyip ekranın en üstüne kadar çıkabileceğiz. Appbarlayout ile app bar ve onun özelliklerini kullanabiliyoruz. Biz burada katlanabilen toolbar özelliğini kullandık. Collapsingtoolbarlayout az önce bahsettiğim katlanabilen toolbar oluyor. Açık olduğu zaman içindeki resim tam ekran oluyor. Katlandığı zaman ise normal bir toolbar gibi gözüküyor. Theme kısmı ile ögelerimize temalar yüklüyoruz. Bunları daha önce bahsettiğim material design sitesinde buldum. Expandedtitlemarginend ile açılmış toolbardaki yazının sağdan ne kadar ayrı olacağını belirtiyoruz. Aynı şekilde expandedtitlemarginstart ile de sağdan ne kadar ayrı olacağını belitiyoruz. Scrollflags sayesinde nasıl katlanacağını veya katlanırken nasıl davranacağını belirtiyoruz. Contentscrim ile toolbar’ın katlandığı zamanki rengini belirliyoruz. Imageview collapsemode ile resmin katlanma stilini belirtiyoruz. Popuptheme ile toolbar’ın katlanmış haldeki temasını belirliyoruz. Nestedscrollciew ile sayfada kaydırma işlemi yapabiliyoruz. Bunun diğer scroolview’den farklı bunun collapsingtoolbar ile uygun çalışmasıdır. Layout_behavior ile kaydırma sırasında ekranın ne tepki vermesi gerektiğini belirtiyoruz. Textstyle ile yazının stilini belirtiyoruz.

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
<android.support.design.widget.CoordinatorLayout
    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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".DetailsActivity">
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="580dp"
            android:fitsSystemWindows="true"
            android:theme="@style/ThemeOverlay.AppCompat.Dark"
            app:contentScrim="?attr/colorPrimaryDark"
            app:expandedTitleMarginEnd="72dp"
            app:expandedTitleMarginStart="16dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/detayImage"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                android:adjustViewBounds="true"/>

            <Toolbar
                android:id="@+id/detay_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/scrollview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:cardUseCompatPadding="true"
            app:cardElevation="8dp"
            app:cardCornerRadius="10dp"
            android:id="@+id/cardview"
            >

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:paddingStart="15dp"
                android:paddingEnd="15dp"
                android:paddingTop="15dp"
                android:paddingBottom="15dp"
                android:id="@+id/cardRelative">
                <TextView
                    android:id="@+id/detayYil"
                    android:text="@string/detayyil"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="18sp"
                    android:layout_marginTop="14dp"
                    android:layout_marginStart="15dp"
                    android:textColor="@color/colorBlack"
                    android:textStyle="bold"/>
                <TextView
                    android:id="@+id/detayYilDegisken"
                    android:layout_toEndOf="@id/detayYil"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="18sp"
                    android:layout_marginTop="14dp"
                    android:layout_marginStart="15dp"
                    android:textColor="@color/colorBlack"
                    />
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/detayStar"
                    android:layout_below="@id/detayYil"
                    android:src="@drawable/ic_star_black_24dp"
                    android:layout_marginTop="14dp"
                    android:layout_marginStart="10dp"
                    />
                <TextView
                    android:id="@+id/detayPuan"
                    android:layout_toEndOf="@id/detayStar"
                    android:layout_below="@id/detayYil"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="18sp"
                    android:layout_marginTop="14dp"
                    android:layout_marginStart="10dp"
                    android:textColor="@color/colorBlack"
                    />
                <TextView
                    android:id="@+id/detaySure"
                    android:layout_below="@id/detayStar"
                    android:text="@string/detay_sure"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="18sp"
                    android:layout_marginTop="14dp"
                    android:layout_marginStart="15dp"
                    android:textColor="@color/colorBlack"
                    android:textStyle="bold"/>
                <TextView
                    android:id="@+id/detaySureDegisken"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="18sp"
                    android:layout_marginTop="14dp"
                    android:layout_marginStart="15dp"
                    android:textColor="@color/colorBlack"
                    android:layout_below="@id/detayStar"
                    android:layout_toEndOf="@id/detaySure"
                    />
                <TextView
                    android:layout_below="@id/detaySureDegisken"
                    android:id="@+id/detayOzetBaslik"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="18sp"
                    android:text="@string/detayozetbaslik"
                    android:layout_marginTop="14dp"
                    android:layout_marginStart="15dp"
                    android:textColor="@color/colorBlack"
                    android:textStyle="bold"
                    />
                <TextView
                    android:id="@+id/detayOzet"
                    android:layout_below="@id/detayOzetBaslik"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="18sp"
                    android:layout_marginTop="14dp"
                    android:layout_marginStart="15dp"
                    android:textColor="@color/colorBlack"
                    android:layout_marginBottom="15dp"
                    />
            </RelativeLayout>
        </android.support.v7.widget.CardView>
    </android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>

Resimlerimizin durum çubuğunun üstünde görünmesi için style ve manifest dosyalarımızda ekleme yapmamız gerekmektedir. Style dosyamızı açıyoruz ve aşağıdaki kodu ekliyoruz. Windowactionbar ile actionbar’ın normal yerinde olup olmayacağını belirtiyoruz. Windownotitle ile pencerede başlık olacağını belirtiyoruz. Windowdrawssystembarbackgrounds ile uygulamamızın durum çubuğu arka planını yeniden şekillendireceğini belirtiyoruz. Statusbarcolor ile durum çubuğunun rengini transparan yapıyoruz.

1
2
3
4
5
6
<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
</style>

Manifest dosyasını açıyoruz. Detailsactivity tag’ına gelip tema belirtiyoruz. Belirteceğimiz tema az önce style dosyasına eklediğimiz temadır. Böylelikle uygulama bu activity’yi çalıştırdığı zaman uygulamanın genel temasını değil bizim belirttiğimiz bu temayı çalıştıracaktır. Ayrıca eklediğiniz her activity’yi manifest dosyasına eklemek zorundasınız. Biz activity eklerken IDE yardımı ile ekliyoruz. Bu yüzden IDE bizim yerimize activity dosyasını manifest dosyasına ekliyor. Ama biz elle activity ekliyor olsaydık manifest dosyasınada elle eklememiz gerekecekti. Eğer eklemezsek activity çalışacağı zaman uygulamamız hata verir.

1
2
<activity android:name=".DetailsActivity"
            android:theme="@style/AppTheme.NoActionBar"/>

Başka bir activity’yi çalıştırmak için intent kullanıyorduk. Intent kullanırken bize activity’nin context’i gerekli oluyordu. Bunu adapter sınıfında elde edemeyiz. Ama adapter sınıfına başka adapter’ın oluşturuldupu fragment veya activity sınıfından gönderebiliriz. Bunun için history fragment dosyasını açıyoruz. Adapter nesnesi oluştururken liste göndermiştik. Onun yanına context’de ekliyoruz.

1
adapter=new FirebaseAdapter(list,view.getContext());

Adapter dosyamızda global bir context nesnesi oluşturuyoruz ve bu nesneyi kurucu methodda gelen değişken ile eşleştiriyoruz.

1
2
3
4
5
6
private Context context;

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

Daha önce kart tasarımı yaparken relativelayout ögesine bir id vermiştik. Userviewholder içinde bir relative layout nesnesi oluşturuyoruz ve bu nesneyi kart tasarımımızdaki layout ögesine ilişkilendiriyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class UserViewHolder extends RecyclerView.ViewHolder{
        TextView txt_film_adi;
        TextView txt_film_puan;
        ImageView txt_film_image;
        RelativeLayout txt_relative;


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

            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);
        }
    }

Onbindviewholder içine gelip relativelayout için click listener ekliyoruz. Click listener işlemi olarak bir intent oluşturuyoruz. Bu intente kodda olduğu gibi putextra ile bilgiler ekliyoruz. Putextra ilk değişken eklenen bilginin adı, ikinci değişken eklenen bilginin kendisidir. Ardından activity’yi başlatı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
@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);
        userViewHolder.txt_relative.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent detailsIntent = new Intent(context, DetailsActivity.class);
                detailsIntent.putExtra("film_adi",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);
            }
        });
    }

DetailsActivity dosyamızı açıyoruz. Önce gelen intent’ten eklediğimiz bilgileri almamız gerekli. Bunun için bilgileri saklamak için global olarak string tipinde değişkenler oluşturuyoruz.

1
private String film_ismi, film_oyuncular, film_ozet_eng, film_puani, film_resimler, film_sinif, film_sure_eng, film_tur, film_tur_eng, film_yili,film_yonetmen, film_image, film_ozet, film_sure, film_color, film_youtube;

Getextra isimli bir method oluşturuyoruz. Oncreate içinden getextra methoduna ulaşıyoruz. Bu methodda gelen intent’ten bilgileri tek tek alıp ilgili değişkene atıyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void getExtra(){
    film_ismi=getIntent().getStringExtra("film_ismi");
    film_oyuncular=getIntent().getStringExtra("film_oyuncular");
    film_ozet_eng=getIntent().getStringExtra("film_ozet_eng");
    film_puani=getIntent().getStringExtra("film_puani");
    film_resimler=getIntent().getStringExtra("film_resimler");
    film_sinif=getIntent().getStringExtra("film_sinif");
    film_sure_eng=getIntent().getStringExtra("film_sure_eng");
    film_tur=getIntent().getStringExtra("film_tur");
    film_tur_eng=getIntent().getStringExtra("film_tur_eng");
    film_yili=getIntent().getStringExtra("film_yili");
    film_yonetmen=getIntent().getStringExtra("film_yonetmen");
    film_image=getIntent().getStringExtra("film_image");
    film_ozet=getIntent().getStringExtra("film_ozet");
    film_sure=getIntent().getStringExtra("film_sure");
    film_color=getIntent().getStringExtra("film_color");
    film_youtube=getIntent().getStringExtra("film_youtube");
}

Layout dosyasındaki imageview ve textview ögeleri için nesneler oluşturuyoruz. İlk olarak resmimizin beyaz olup olmadığına bakıyoruz. Bunu veritabanına kaydetmiştik. Eğer cevap evet ise toolbar yazı rengini siyah yapıyoruz. Varsayılan olarak bu yazı beyaz renklidir. Eğer resmimiz beyaz renkli değilse bunu değiştirmiyoruz. Filmin ismini, yılını ve puanını nesnelere gönderiyoruz. Sistem dilini kontrol ediyoruz. Eğer sistem dili İngilizce ise ekrana özet ve süre bilgilerini İngilizce olarak gönderiyoruz. Eğer İngilizce değil ise Türkçe olarak gönderiyoruz. Daha sonra uygulamamızdaki diğer yazıları da ingilizceye çevireceğiz. Bu aşamadan sonra uygulamamızın bu bölümü tamamlanmış oluyor. Daha sonra detay sayfasındaki eksik yerleri ekleyeceğiz.

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
public class DetailsActivity extends AppCompatActivity {

    private String film_ismi, film_oyuncular, film_ozet_eng, film_puani, film_resimler, film_sinif,
            film_sure_eng, film_tur, film_tur_eng, film_yili,
            film_yonetmen, film_image, film_ozet, film_sure, film_color, film_youtube;

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

        ImageView imageView=findViewById(R.id.detayImage);
        CollapsingToolbarLayout textFilmAdi = findViewById(R.id.collapsing_toolbar);
        TextView textFilmYil = findViewById(R.id.detayYilDegisken);
        TextView textFilmPuan = findViewById(R.id.detayPuan);
        TextView textFilmSure = findViewById(R.id.detaySureDegisken);
        TextView textFilmOzet = findViewById(R.id.detayOzet);

        if(Objects.equals(film_color,"evet")){
            textFilmAdi.setExpandedTitleColor(getResources().getColor(R.color.colorBlack));
        }

        textFilmAdi.setTitle(film_ismi);
        textFilmYil.setText(film_yili);
        textFilmPuan.setText(film_puani);

        if(Objects.equals(Locale.getDefault().getDisplayLanguage(),"English" )){
            textFilmSure.setText(film_sure_eng);
            textFilmOzet.setText(film_ozet_eng);
        }
        else {
            textFilmSure.setText(film_sure);
            textFilmOzet.setText(film_ozet);
        }

        Picasso.get().load(film_image).into(imageView);
    }

    private void getExtra(){
        film_ismi=getIntent().getStringExtra("film_ismi");
        film_oyuncular=getIntent().getStringExtra("film_oyuncular");
        film_ozet_eng=getIntent().getStringExtra("film_ozet_eng");
        film_puani=getIntent().getStringExtra("film_puani");
        film_resimler=getIntent().getStringExtra("film_resimler");
        film_sinif=getIntent().getStringExtra("film_sinif");
        film_sure_eng=getIntent().getStringExtra("film_sure_eng");
        film_tur=getIntent().getStringExtra("film_tur");
        film_tur_eng=getIntent().getStringExtra("film_tur_eng");
        film_yili=getIntent().getStringExtra("film_yili");
        film_yonetmen=getIntent().getStringExtra("film_yonetmen");
        film_image=getIntent().getStringExtra("film_image");
        film_ozet=getIntent().getStringExtra("film_ozet");
        film_sure=getIntent().getStringExtra("film_sure");
        film_color=getIntent().getStringExtra("film_color");
        film_youtube=getIntent().getStringExtra("film_youtube");
    }
}

Test etmek için isterseniz veritabanına gerçek film bilgileri ekleyebilirsiniz. Ben film bilgileri için bu adresi kullanıyorum. Puan için IMDB puanı kullanıyorum. Test etmeden önce Firebase Database internet sitesinden daha önce eklediğiniz verileri silmelisiniz çünkü uygulama model sınıfını baz alıp orada olmayan verileri çekmeye çalışıyor. Film eklemek için isterseniz ekleme activity’sinden ekleyebilirsiniz. İsterseniz de oradan hiçbir değer vermeden ekleme yapıp internet sitesinden verileri değiştirebilirsiniz. Bunun için Filmler düğümünün altındaki bir değeri genişletip onun altındaki istediğiniz değerin karşısındaki çift tırnağın içine tıklayıp istediğiniz değeri girebilirsiniz.

Bunları tamamladıktan sonra telefonumuzu bilgisayara bağlayıp uygulamamızı telefonumuzda çalıştırıyoruz.

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