Android Adapter

Adapter bir veri kaynağıyla, veriye ihtiyacı olan nesneyi birbirine bağlamaya yarayan yapılardır. ListView gibi bir dizi veriyi içinde bulunduran yapılara, bu verileri adapter aracılığıyla veririz. Adapter bir veri kaynağındaki verileri (kısaca, veri modelini) görsel öğelerde kullanmaya uygun hale getirir.

Custom adapterlar ise BaseAdapter’i özelleştirerek elde edilen adapterlardır. Custom adapter için öncelikle bir sınıf yazıyoruz. Aşağıdaki örnek sınıfı kullanabilirsiniz.

public class clssSifre {
        //Şifre Id
        private String Id;

        //Şifre Adı
        private String Ad;

        //Şifremiz
        private String Sifre;

        //Şifre için bir açıklama.
        private String Aciklama;

        //clssSifre sınıfının yapıcı metotu.
        public clssSifre(String Id, String Ad, String Aciklama, String Sifre) {
            this.Id = Id;
            this.Ad = Ad;
            this.Aciklama = Aciklama;
            this.Sifre = Sifre;
        }

        //clssSifre sınıfının özelliklerine erişebilmek için yazılmış setter getter mototları.
        public void setId(String Id) {
            this.Id = Id;
        }

        public String getId() {
            return Id;
        }

        public void setAd(String Ad) {
            this.Ad = Ad;
        }

        public String getAd() {
            return Ad;
        }

        public void setAciklama(String Aciklama) {
            this.Aciklama = Aciklama;
        }

        public String getAciklama() {
            return Aciklama;
        }

        public void setSifre(String Sifre) {
            this.Sifre = Sifre;
        }

        public String getSifre() {
            return Sifre;
        }
    }

satir_sifre_list adında bir xml dosyası oluşturuyoruz. Xml dosyamızda 3 tane textview olacak şekilde düzenliyoruz.

//customadapterimizi BaseAdapter sınıfından extends ediyoruz.
    public class AdapterSifre extends BaseAdapter {
        private LayoutInflater mInflater;
        private List<clssSifre> mVeriList = null;
        Activity activity;
        boolean LongClick = false;

        public AdapterSifre(Activity activity, List<clssSifre> mVeriList) {
            this.activity = activity;
            this.mVeriList = mVeriList;
            mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {
            return mVeriList.size();
        }

        @Override
        public clssSifre getItem(int position) {
            return mVeriList.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View satirView;
            //satir_sifre_list adında oluşturduğumuz Xml dosyamızı çağırıyoruz.
            satirView = mInflater.inflate(R.layout.satir_sifre_list, null);

            //Xml dosyasında bulunan textviewlerimizi kullanabilmek için nesne oluşturuyoruz.
            final TextView txtSifreAdi = (TextView) satirView.findViewById(R.id.txtSifreAdi);
            final TextView txtSifre = (TextView) satirView.findViewById(R.id.txtSifre);
            final TextView txtSifreAciklama = (TextView) satirView.findViewById(R.id.txtSifreAciklama);

            //mVeriList arrayimizdan veriyi alıyoruz.
            final clssSifre sifre = mVeriList.get(position);
            if (sifre != null) {
                //Aldığımız veriye sınıf üzerinden istediğimiz özellikleri setter getter metotu ile çağırıyoruz.
                txtSifreAdi.setText("" + sifre.getAd());
                txtSifre.setText("" + sifre.getSifre());
                txtSifreAciklama.setText("" + sifre.getAciklama());
            }
            return satirView;
        }
    }

Custom adapterimizi çalıştırmak için Main activity’nin xml dosyasına bir tane list view koyuyoruz. ListViewin adı ise listViewSifreler olsun.

/**
     * Created by CAGLARTELEF on 24.07.2017.
     */
    MainActivity() {
        private List<clssSifre> mVeriList = new List<clssSifre>();
        private clssSifre sifre = new clssSifre();
        sifre.setAd("a");  sifre.setId("1");
        sifre.setSifre("1234");
        sifre.setAciklama("Test 1");
        mVeriList.add(sifre);
        sifre = new Sifre();
        sifre.setAd("b");  sifre.setId("2");
        sifre.setSifre("1234");
        sifre.setAciklama("Test 2");
        mVeriList.add(sifre);
        listViewSifreler = (ListView) findViewById(R.id.listViewSifreler);
        AdapterSifre adaptorumuz = new AdapterSifre(this, mVeriList);
        listMesajlar.setAdapter(adaptorumuz);
    }

Böylelikle istediğimiz gibi bir custom adapteri oluşturduk ve çalıştırdık. İyi çalışmalar kolay gelsin. 🙂