Soru & Cevap

Özel adapterda picasso kullanımı?

08.05.2015 - 01:33

Picasso.with(this)
 .load(URL)
 .into(imageView);  burada this neyi gösteriyor? Özel adapter oluşturdum ve onun içinde kullanmak istiyorum ancak hata alıyorum?

12 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user huma.ozdalkiran
huma.ozdalkiran
08.05.2015 - 03:54

Anladım çok teşekkür ederim.

picture-31404-1421919825.png
muhcob
08.05.2015 - 02:29

Öncelikle Context'in ne olduğunu öğrenmen daha faydalı olur diye düşünüyorum. Burada anlatılıyor. Kısaca tanımlamak gerekirse uygulama hakkında bilgiler içermektedir. Context ile Activity başlatma, Broadcast ve Receiver işlemlerini gerçekleştirilebilir.

Şimdi gelelim soruda geçen Context olayının çözümüne;

[code]Picasso.with(this).load(URL).into(imageView); [/code]

Burada yer alan "this" Context yani Activity bilgisidir. Yani sana resim indirme işlemini hangi Activity içerisinde yaptığını soruyor. Bunun için yazdığın Adapter içerisine Context bilgisini gönderip gelen Context'i buradaki "this" yerine yazarsan problemin çözülecektir.

Activity içerisinde Adapter'a Context bilgisi gönderme:

Burada işlemlerin yapıldığı sınıf MainActivity.java sınıfıdır. Sen işlem yaptığın sınıfında adını yazabilirsin.

[code]final ListView listview = (ListView)findViewById(R.id.list_view);

listview.setAdapter(new ImageDownloadAdapter(MainActivity.this));[/code]

Fragment içerisinde Adapter'a Context bilgisi gönderme:

Burada işlemlerin yapıldığı sınıf MainActivity.java sınıfıdır. Sen işlem yaptığın sınıfında adını yazabilirsin.

[code]final ListView listview = (ListView)findViewById(R.id.list_view);

listview.setAdapter(new ImageDownloadAdapter(getActivity()));[/code]

Gönderilen Context'i Adapter içerisinde almak

[code]class ImageDownloadAdapter extends BaseAdapter(){

Context context;

public ImageDownloadAdapter(Context context){

this.context = context;

}


@Override public int getCount() { 

//içerisini kendi adapter'ına göre doldurursun

@Override public String getItem(int position) { 

//içerisini kendi adapter'ına göre doldurursun

@Override public long getItemId(int position) {

return position;

}

 

@Override public View getView(int position, View convertView, ViewGroup parent) { 

Picasso.with(context).load(URL).into(imageView); 

return convertView;

}


}[/code]

Yukarıdaki kod olayın kafanda oluşması için yazılmıştır. Gerekli düzenlemeleri kendine göre yapabilirsin.

 

picture-1372-1408467635.jpg
ahmtbrk
08.05.2015 - 01:46

this yazan yere kızıyor.Çünkü orada Picasso senden bir context istiyor sen ise ona adapteri referans ediyorsun.

this kelimesini yazdığın yerde o this kelimesini yazdığın classı nitelemiş olursun.

O yüzden yukarda mInflater'i elde ederken Activity veya Context'i

this yazan yere verirsen sorunun düzelecektir.