Listviewımızın performansını arttırmaya devam ediyoruz.
Yazdığımız bir yer tutucu sınıfı ile findviewbyid methodunun sadece yeni üyeler için çalışmasını sağladık ve böylece performans kazancımızı %175 olacak şekilde artmış oldu.
Umarım anlaşılıyordur, lütfen takıldığınız yerleri sormaktan çekinmeyin.
Tüm uygulamayı indirmek için tıklayın…
Bu optimizasyondan sonra EmreAdapter sınıfının son hali şu şekilde oldu…
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 |
package emrealtunbilek.com.listviewbayraklar; import android.content.Context; import android.support.annotation.NonNull; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import org.w3c.dom.Text; /*ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, R.layout.tek_satir, R.id.textView, ulkeAdlari); ulkelerListesi.setAdapter(adapter);*/ public class EmreAdapter extends ArrayAdapter<String> { Context context; String[] ulkeAdlari; String[] ulkeTanimlari; int[] resimler; EmreAdapter(Context c, String[] ulkeAdlari, String[] ulkeTanimlari, int resimlerDizisi[]) { super(c, R.layout.tek_satir, R.id.textView, ulkeAdlari); this.context = c; this.ulkeAdlari = ulkeAdlari; this.ulkeTanimlari = ulkeTanimlari; this.resimler = resimlerDizisi; } class ViewYerTutucu{ ImageView resim; TextView ulke; TextView tanim; ViewYerTutucu(View v){ resim= (ImageView) v.findViewById(R.id.imageView); ulke= (TextView) v.findViewById(R.id.textView); tanim= (TextView) v.findViewById(R.id.textView2); } } @NonNull @Override public View getView(int position, View convertView, ViewGroup parent) { View tek_satir = convertView; ViewYerTutucu tutucu=null; if (tek_satir == null) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); tek_satir = inflater.inflate(R.layout.tek_satir, parent, false); tutucu=new ViewYerTutucu(tek_satir); tek_satir.setTag(tutucu); Log.e("EMRE","yeni üye"); } else{ tutucu= (ViewYerTutucu) tek_satir.getTag(); Log.e("EMRE","recycled üye"); } tutucu.resim.setImageResource(resimler[position]); tutucu.ulke.setText(ulkeAdlari[position]); tutucu.tanim.setText(ulkeTanimlari[position]); return tek_satir; } } |