1: LayoutInflater
Mengambil layout file XML Anda dan membuat objek View yang berbeda dari isinya.
2: Adaptor dibuat untuk menggunakan kembali Tampilan, saat Tampilan di-scroll sehingga tidak lagi terlihat, ini dapat digunakan untuk salah satu Tampilan baru yang muncul. Tampilan yang digunakan kembali ini adalah convertView
. Jika ini null, artinya tidak ada Tampilan daur ulang dan kita harus membuat yang baru, jika tidak kita harus menggunakannya untuk menghindari pembuatan yang baru.
3: parent
Disediakan sehingga Anda dapat memekarkan tampilan Anda ke dalam parameter tata letak yang tepat.
Semua ini bersama-sama dapat digunakan untuk secara efektif membuat tampilan yang akan muncul di daftar Anda (atau tampilan lain yang menggunakan adaptor):
public View getView(int position, @Nullable View convertView, ViewGroup parent){
if (convertView == null) {
//We must create a View:
convertView = inflater.inflate(R.layout.my_list_item, parent, false);
}
//Here we can do changes to the convertView, such as set a text on a TextView
//or an image on an ImageView.
return convertView;
}
Perhatikan penggunaan LayoutInflater
, yang parent
dapat digunakan sebagai argumen untuk itu, dan bagaimana convertView
digunakan kembali.
getView()
Metode di Adapter untuk tampilan menghasilkan item dariListView
,Gallery
, ...LayoutInflater
digunakan untuk mendapatkan View objek yang Anda menentukan dalam xml layout (objek akar, biasanyaLinearLayout
,FrameLayout
atauRelativeLayout
)convertView
untuk didaur ulang. Misalkan Anda memiliki tampilan daftar yang hanya dapat menampilkan 10 item dalam satu waktu, dan saat ini menampilkan item 1 -> item 10. Saat Anda menggulir ke bawah satu item, item 1 akan keluar dari layar, dan item 11 akan ditampilkan . Untuk menghasilkan View untuk item 11, metode getView () akan dipanggil, danconvertView
berikut adalah tampilan dari item 1 (yang tidak diperlukan lagi). Jadi, alih-alih buat objek View baru untuk item 11 (yang mahal), mengapa tidak menggunakan kembaliconvertView
? => kita hanya memeriksaconvertView
null atau tidak, jika null buat tampilan baru, jika tidak gunakan kembaliconvertView
.parentView
adalah ListView atau Galeri ... yang berisi tampilan item yanggetView()
dihasilkan.Catatan : Anda tidak memanggil metode ini secara langsung, hanya perlu mengimplementasikannya untuk memberi tahu tampilan induk cara menghasilkan tampilan item.
sumber
Anda bisa melihat video ini tentang tampilan daftar. Ini dari tahun terakhir Google IO dan masih yang terbaik dalam pandangan daftar walk-through dalam pikiran saya.
http://www.youtube.com/watch?v=wDBM6wVEO70
Ini mengembangkan layout (file xml di res / layout / folder Anda) menjadi Objek java seperti LinearLayout dan tampilan lainnya.
Lihatlah videonya, akan membuat Anda up to date dengan apa gunanya tampilan convert, pada dasarnya ini adalah tampilan daur ulang yang menunggu untuk digunakan kembali oleh Anda, untuk menghindari membuat objek baru dan memperlambat pengguliran daftar Anda.
Memungkinkan Anda untuk mereferensikan tampilan daftar Anda dari adaptor.
sumber
Saat Anda mendesain menggunakan XML, semua elemen UI Anda hanyalah tag dan parameter. Sebelum Anda dapat menggunakan elemen UI ini, (misalnya TextView atau LinearLayout), Anda perlu membuat objek aktual yang sesuai dengan elemen xml ini. Itulah gunanya inflater. Inflater, menggunakan tag ini dan parameternya yang sesuai untuk membuat objek aktual dan menyetel semua parameter. Setelah ini, Anda bisa mendapatkan referensi ke elemen UI menggunakan findViewById ().
Yang satu ini menarik. Soalnya, getView () dipanggil setiap kali item dalam daftar ditarik. Sekarang, sebelum item bisa digambar, itu harus dibuat. Sekarang convertView pada dasarnya adalah tampilan yang terakhir digunakan untuk menggambar item. Dalam getView () Anda memekarkan xml terlebih dahulu, kemudian menggunakan findByViewID () untuk mendapatkan berbagai elemen UI dari listitem. Ketika kita memeriksa (convertView == null) yang kita lakukan adalah memeriksa bahwa jika tampilan adalah null (untuk item pertama) lalu membuatnya, jika tidak, jika sudah ada, gunakan kembali, tidak perlu melalui proses pemekaran lagi . Menjadikannya jauh lebih efisien.
Anda juga harus menemukan konsep ViewHolder di getView (). Ini membuat daftar lebih efisien. Yang kami lakukan adalah membuat viewholder dan menyimpan referensi ke semua elemen UI yang kami dapatkan setelah memekarkan. Dengan cara ini, kita bisa menghindari memanggil banyak findByViewId () dan menghemat banyak waktu. ViewHolder ini dibuat dalam kondisi (convertView == null) dan disimpan dalam convertView menggunakan setTag (). Di loop lain kita baru saja mendapatkannya kembali menggunakan getView () dan menggunakannya kembali.
Induknya adalah ViewGroup tempat tampilan Anda dibuat oleh getView () akhirnya dilampirkan. Sekarang dalam kasus Anda ini adalah ListView.
Semoga ini membantu :)
sumber
Inflator tata letak memekarkan / menambahkan XML eksternal ke tampilan Anda saat ini.
getView () dipanggil berkali-kali termasuk saat di-scroll. Jadi jika sudah ada view inflated kami tidak mau melakukannya lagi karena inflating adalah proses yang mahal .. oleh karena itu kami cek apakah nilainya null dan kemudian mengembang.
Tampilan induk adalah sel tunggal dari Daftar Anda ..
sumber
LayoutInflater
digunakan untuk menghasilkan tampilan dinamis XML untukListView
item atau dalamonCreateView
fragmen.ConvertView
pada dasarnya digunakan untuk mendaur ulang tampilan yang saat ini tidak ada dalam tampilan. Katakanlah Anda memiliki scrollableListView
. Saat menggulir ke bawah atau atas,convertView
memberikan tampilan yang digulir. Penggunaan kembali ini menghemat memori.Parameter induk dari
getView()
metode ini memberikan referensi ke tata letak induk yang memiliki listView. Katakanlah Anda ingin mendapatkan Id dari item apa pun di XML induk, Anda dapat menggunakan:sumber
getView()
metode buat baruView
atauViewGroup
untuk setiap barisListview
atau Spinner. Anda dapat mendefinisikan iniView
atauViewGroup
dalamLayout XML
file dires/layout
folder dan dapat memberikan referensi ke objekAdapter
kelas.jika Anda memiliki 4 item dalam Array yang diteruskan ke Adapter.
getView()
Metode akan membuat 4 View untuk 4 baris Adaper.Kelas LayoutInflater memiliki Metode inflate () yang membuat Objek Tampilan dari layout sumber daya XML.
sumber
Anda juga dapat menemukan informasi berguna tentang getView di antarmuka Adapter di file Adapter.java. Ia mengatakan;
sumber