Jawaban:
Saat Anda menggunakan tampilan khusus di, ListView
Anda harus menentukan tata letak baris. Anda membuat xml tempat Anda meletakkan widget android dan kemudian dalam kode adaptor Anda harus melakukan sesuatu seperti ini:
public MyAdapter(Context context, List<MyObject> objects) extends ArrayAdapter {
super(context, 1, objects);
/* We get the inflator in the constructor */
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
/* We inflate the xml which gives us a view */
view = mInflater.inflate(R.layout.my_list_custom_row, parent, false);
/* Get the item in the adapter */
MyObject myObject = getItem(position);
/* Get the widget with id name which is defined in the xml of the row */
TextView name = (TextView) view.findViewById(R.id.name);
/* Populate the row's xml with info from the item */
name.setText(myObject.getName());
/* Return the generated view */
return view;
}
Baca lebih lanjut di dokumentasi resmi .
View view = convertView; if (view == null) { view = mInflater.... }
LayoutInflater
itu, meskipun menjelaskan di mana menggunakannya. Jawaban 1-bawah lebih baik.
Kelas LayoutInflater digunakan untuk instantiate isi file XML layout ke objek View yang sesuai.
Dengan kata lain, dibutuhkan file XML sebagai input dan membangun objek View darinya.
single_list_item.xml
file untuk setiap baris a ListView
. Apakah penggunaan file XML itu seperti inflater?
LayoutInflator
harus dilakukanKetika saya pertama kali memulai pemrograman Android, saya benar-benar bingung oleh LayoutInflater
dan findViewById
. Terkadang kami menggunakan satu dan terkadang yang lain.
LayoutInflater
digunakan untuk membuat objek baru View
(atau Layout
) dari salah satu tata letak xml Anda.findViewById
hanya memberi Anda referensi ke tampilan daripada yang telah dibuat. Anda mungkin berpikir bahwa Anda belum membuat pandangan, tapi setiap kali Anda menelepon setContentView
di onCreate
, tata letak aktivitas bersama dengan subviews nya akan meningkat (diciptakan) di belakang layar.Jadi jika tampilan sudah ada, maka gunakan findViewById
. Jika tidak, maka buatlah dengan a LayoutInflater
.
Ini adalah proyek mini yang saya buat yang menunjukkan keduanya LayoutInflater
dan findViewById
sedang beraksi. Tanpa kode khusus, tata letaknya seperti ini.
Kotak biru adalah tata letak khusus dimasukkan ke dalam tata letak utama dengan include
(lihat di sini untuk lebih lanjut). Itu meningkat secara otomatis karena itu adalah bagian dari tampilan konten. Seperti yang Anda lihat, tidak ada yang spesial dari kode ini.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Sekarang mari kita mengembang (membuat) salinan tata letak khusus kita dan menambahkannya.
LayoutInflater inflater = getLayoutInflater();
View myLayout = inflater.inflate(R.layout.my_layout, mainLayout, false);
Untuk mengembang tata letak tampilan baru, semua yang saya lakukan adalah memberi tahu inflater nama file xml saya ( my_layout
), tata letak induk yang ingin saya tambahkan ( mainLayout
), dan bahwa saya sebenarnya belum ingin menambahkannya ( false
) . (Saya juga bisa mengatur induk ke null
, tetapi kemudian parameter tata letak tampilan root tata letak kustom saya akan diabaikan.)
Ini lagi dalam konteks.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// inflate the main layout for the activity
setContentView(R.layout.activity_main);
// get a reference to the already created main layout
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.activity_main_layout);
// inflate (create) another copy of our custom layout
LayoutInflater inflater = getLayoutInflater();
View myLayout = inflater.inflate(R.layout.my_layout, mainLayout, false);
// make changes to our custom layout and its subviews
myLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.colorAccent));
TextView textView = (TextView) myLayout.findViewById(R.id.textView);
textView.setText("New Layout");
// add our custom layout to the main layout
mainLayout.addView(myLayout);
}
}
Perhatikan bagaimana findViewById
digunakan hanya setelah tata letak telah meningkat.
Berikut ini adalah xml untuk contoh di atas.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main_layout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<!-- Here is the inserted layout -->
<include layout="@layout/my_layout"/>
</LinearLayout>
my_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@color/colorPrimary">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:padding="5dp"
android:textColor="@android:color/white"
android:text="My Layout"/>
</RelativeLayout>
RecyclerView
. (Lihat RecyclerView
contoh - contoh ini untuk daftar atau kisi .) Anda harus mengembang tata letak baru untuk setiap item yang terlihat dalam daftar atau kisi.myLayout
adalah View, meskipun saya bisa menggelembungkannya sebagai RelativeLayout (lihat my_layout.xml). Setelah meningkat saya menambahkannya sebagai subview dari induk LinearLayout (yaitu, mainLayout
).
LayoutInflater.inflate () menyediakan sarana untuk mengonversi file res / layout / *. Xml yang mendefinisikan tampilan menjadi objek Tampilan aktual yang dapat digunakan dalam kode sumber aplikasi Anda.
dasar dua langkah: ambil inflater dan kemudian kembangkan sumber daya
Bagaimana Anda mendapatkan inflater?
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Bagaimana Anda mendapatkan tampilan dengan asumsi file xml adalah "list_item.xml"?
View view = inflater.inflate(R.layout.list_item, parent, false);
Berikut adalah contoh lain yang mirip dengan yang sebelumnya, tetapi diperluas untuk lebih menunjukkan parameter mengembang dan perilaku dinamis yang dapat diberikan.
Misalkan tata letak baris ListView Anda dapat memiliki jumlah variabel TextViews. Jadi pertama-tama Anda mengembang tampilan item dasar (seperti contoh sebelumnya), dan kemudian loop secara dinamis menambahkan TextViews pada saat run-time. Menggunakan android: layout_weight juga meluruskan segalanya dengan sempurna.
Berikut adalah sumber daya Tata Letak:
list_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/field1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"/>
<TextView
android:id="@+id/field2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
</LinearLayout>
schedule_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
Mengganti metode getView dalam ekstensi kelas BaseAdapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = activity.getLayoutInflater();
View lst_item_view = inflater.inflate(R.layout.list_layout, null);
TextView t1 = (TextView) lst_item_view.findViewById(R.id.field1);
TextView t2 = (TextView) lst_item_view.findViewById(R.id.field2);
t1.setText("some value");
t2.setText("another value");
// dinamically add TextViews for each item in ArrayList list_schedule
for(int i = 0; i < list_schedule.size(); i++){
View schedule_view = inflater.inflate(R.layout.schedule_layout, (ViewGroup) lst_item_view, false);
((TextView)schedule_view).setText(list_schedule.get(i));
((ViewGroup) lst_item_view).addView(schedule_view);
}
return lst_item_view;
}
Perhatikan panggilan metode mengembang yang berbeda:
inflater.inflate(R.layout.list_layout, null); // no parent
inflater.inflate(R.layout.schedule_layout, (ViewGroup) lst_item_view, false); // with parent preserving LayoutParams
Kelas ini digunakan untuk instantiate tata letak file XML ke View
objek yang sesuai . Itu tidak pernah digunakan secara langsung - gunakan getLayoutInflater()
atau getSystemService(String)
untuk mengambil LayoutInflater
contoh standar yang sudah terhubung ke konteks saat ini dan dikonfigurasi dengan benar untuk perangkat yang Anda jalankan. Sebagai contoh:
LayoutInflater inflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
Referensi: http://developer.android.com/reference/android/view/LayoutInflater.html
Menggembungkan berarti membaca file XML yang menggambarkan tata letak (atau elemen GUI) dan untuk membuat objek aktual yang sesuai dengannya, dan dengan demikian membuat objek tersebut terlihat dalam aplikasi Android.
final Dialog mDateTimeDialog = new Dialog(MainActivity.this);
// Inflate the root layout
final RelativeLayout mDateTimeDialogView = (RelativeLayout) getLayoutInflater().inflate(R.layout.date_time_dialog, null);
// Grab widget instance
final DateTimePicker mDateTimePicker = (DateTimePicker) mDateTimeDialogView.findViewById(R.id.DateTimePicker);
File ini dapat disimpan sebagai date_time_dialog.xml :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/DateTimeDialog" android:layout_width="100px"
android:layout_height="wrap_content">
<com.dt.datetimepicker.DateTimePicker
android:id="@+id/DateTimePicker" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<LinearLayout android:id="@+id/ControlButtons"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_below="@+id/DateTimePicker"
android:padding="5dip">
<Button android:id="@+id/SetDateTime" android:layout_width="0dip"
android:text="@android:string/ok" android:layout_weight="1"
android:layout_height="wrap_content"
/>
<Button android:id="@+id/ResetDateTime" android:layout_width="0dip"
android:text="Reset" android:layout_weight="1"
android:layout_height="wrap_content"
/>
<Button android:id="@+id/CancelDialog" android:layout_width="0dip"
android:text="@android:string/cancel" android:layout_weight="1"
android:layout_height="wrap_content"
/>
</LinearLayout>
File ini dapat disimpan sebagai date_time_picker.xml :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="wrap_content" `enter code here`
android:padding="5dip" android:id="@+id/DateTimePicker">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:baselineAligned="true"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/month_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="1dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/month_plus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_up_final"/>
<EditText
android:id="@+id/month_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:focusable="false"
android:gravity="center"
android:singleLine="true"
android:textColor="#000000">
</EditText>
<Button
android:id="@+id/month_minus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_down_final"/>
</LinearLayout>
<LinearLayout
android:id="@+id/date_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0.5dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/date_plus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_up_final"/>
<EditText
android:id="@+id/date_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:gravity="center"
android:focusable="false"
android:inputType="number"
android:textColor="#000000"
android:singleLine="true"/>
<Button
android:id="@+id/date_minus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_down_final"/>
</LinearLayout>
<LinearLayout
android:id="@+id/year_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0.5dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/year_plus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_up_final"/>
<EditText
android:id="@+id/year_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:gravity="center"
android:focusable="false"
android:inputType="number"
android:textColor="#000000"
android:singleLine="true"/>
<Button
android:id="@+id/year_minus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_down_final"/>
</LinearLayout>
<LinearLayout
android:id="@+id/hour_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/hour_plus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_up_final"/>
<EditText
android:id="@+id/hour_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:gravity="center"
android:focusable="false"
android:inputType="number"
android:textColor="#000000"
android:singleLine="true">
</EditText>
<Button
android:id="@+id/hour_minus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_down_final"/>
</LinearLayout>
<LinearLayout
android:id="@+id/min_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0.35dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="vertical">
<Button
android:id="@+id/min_plus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_up_final"/>
<EditText
android:id="@+id/min_display"
android:layout_width="45dp"
android:layout_height="35dp"
android:background="@drawable/picker_middle"
android:gravity="center"
android:focusable="false"
android:inputType="number"
android:textColor="#000000"
android:singleLine="true"/>
<Button
android:id="@+id/min_minus"
android:layout_width="45dp"
android:layout_height="45dp"
android:background="@drawable/image_button_down_final"/>
</LinearLayout>
<LinearLayout
android:id="@+id/meridiem_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0.35dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:gravity="center"
android:orientation="vertical">
<ToggleButton
android:id="@+id/toggle_display"
style="@style/SpecialToggleButton"
android:layout_width="40dp"
android:layout_height="32dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="45dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:padding="5dp"
android:gravity="center"
android:textOn="@string/meridiem_AM"
android:textOff="@string/meridiem_PM"
android:checked="true"/>
<!-- android:checked="true" -->
</LinearLayout>
</LinearLayout>
</RelativeLayout>
The MainActivity
kelas disimpan sebagai MainActivity.java :
public class MainActivity extends Activity {
EditText editText;
Button button_click;
public static Activity me = null;
String meridiem;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText)findViewById(R.id.edittext1);
button_click = (Button)findViewById(R.id.button1);
button_click.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view){
final Dialog mDateTimeDialog = new Dialog(MainActivity.this);
final RelativeLayout mDateTimeDialogView = (RelativeLayout) getLayoutInflater().inflate(R.layout.date_time_dialog, null);
final DateTimePicker mDateTimePicker = (DateTimePicker) mDateTimeDialogView.findViewById(R.id.DateTimePicker);
// mDateTimePicker.setDateChangedListener();
((Button) mDateTimeDialogView.findViewById(R.id.SetDateTime)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mDateTimePicker.clearFocus();
int hour = mDateTimePicker.getHour();
String result_string = mDateTimePicker.getMonth() +" "+ String.valueOf(mDateTimePicker.getDay()) + ", " + String.valueOf(mDateTimePicker.getYear())
+ " " +(mDateTimePicker.getHour()<=9? String.valueOf("0"+mDateTimePicker.getHour()) : String.valueOf(mDateTimePicker.getHour())) + ":" + (mDateTimePicker.getMinute()<=9?String.valueOf("0"+mDateTimePicker.getMinute()):String.valueOf(mDateTimePicker.getMinute()))+" "+mDateTimePicker.getMeridiem();
editText.setText(result_string);
mDateTimeDialog.dismiss();
}
});
// Cancel the dialog when the "Cancel" button is clicked
((Button) mDateTimeDialogView.findViewById(R.id.CancelDialog)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mDateTimeDialog.cancel();
}
});
// Reset Date and Time pickers when the "Reset" button is clicked
((Button) mDateTimeDialogView.findViewById(R.id.ResetDateTime)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
mDateTimePicker.reset();
}
});
// Setup TimePicker
// No title on the dialog window
mDateTimeDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
// Set the dialog content view
mDateTimeDialog.setContentView(mDateTimeDialogView);
// Display the dialog
mDateTimeDialog.show();
}
});
}
}
Apa yang inflater lakukan?
Dibutuhkan tata letak xml sebagai input (katakanlah) dan mengubahnya menjadi objek Lihat.
Mengapa dibutuhkan
Mari kita pikirkan skenario di mana kita perlu membuat tampilan daftar kustom. Sekarang setiap baris harus dibuat khusus. Tetapi bagaimana kita bisa melakukannya. Tidak mungkin untuk menetapkan tata letak xml ke deretan tampilan daftar. Jadi, kami membuat objek View. Dengan demikian kita dapat mengakses elemen di dalamnya (tampilan teks, tampilan gambar dll) dan juga menetapkan objek sebagai deretan tampilan daftar
Jadi, setiap kali kita perlu menetapkan objek jenis tampilan di suatu tempat dan kami memiliki desain xml kustom kami, kami hanya mengubahnya ke objek oleh inflater dan menggunakannya.
LayoutInflater adalah kelas yang digunakan untuk instantiate file XML layout ke objek tampilan terkait yang dapat digunakan dalam program Java. Secara sederhana, ada dua cara untuk membuat UI di android. Yang satu adalah cara statis dan yang lainnya dinamis atau terprogram. Misalkan kita memiliki tata letak sederhana main.xml memiliki satu textview
dan satu edittext
sebagai berikut.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layout1"
>
<TextView
android:id="@+id/namelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter your name"
android:textAppearance="?android:attr/textAppearanceLarge" >
</TextView>
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginTop="14dp"
android:ems="10">
</EditText>
</LinearLayout>
Kita dapat menampilkan tata letak ini dengan cara statis
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Cara dinamis membuat tampilan berarti tampilan tidak disebutkan dalam main.xml kami, tetapi kami ingin menampilkannya dalam waktu berjalan. Misalnya, kami memiliki folder tata letak XML lain sebagai footer.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="Add your record"
android:textSize="24sp" >
</TextView>
Kami ingin menampilkan kotak teks ini dalam jangka waktu dalam UI utama kami. Jadi di sini kita akan mengembang text.xml. Lihat bagaimana:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
TextView t = (TextView)inflater.inflate(R.layout.footer,null);
lLayout = (LinearLayout)findViewById(R.id.layout1);
lLayout.addView(t);
Di sini saya telah menggunakan getSystemService (String) untuk mengambil contoh LayoutInflater. Saya juga bisa menggunakan getLayoutInflator () untuk mengembang daripada menggunakan getSystemService (String) seperti di bawah ini:
LayoutInflator inflater = getLayoutInflater();
TextView t = (TextView) inflater.inflate(R.layout.footer, null);
lLayout.addView(t);
di sini adalah contoh untuk mendapatkan referensi untuk tampilan root dari tata letak, menggembungkannya dan menggunakannya dengan setContentView (tampilan tampilan)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater li=getLayoutInflater();
View rootView=li.inflate(R.layout.activity_main,null);
setContentView(rootView);
}
Layout inflater adalah kelas yang membaca deskripsi penampilan xml dan mengubahnya menjadi objek tampilan berbasis java.
daftar penyesuaian saya harap ini menggambarkan konsep
public class second extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
// TextView textview=(TextView)findViewById(R.id.textView1);
// textview.setText(getIntent().getExtras().getString("value"));
setListAdapter(new MyAdapter(this,R.layout.list_item,R.id.textView1, getResources().getStringArray(R.array.counteries)));
}
private class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] objects) {
super(context, resource, textViewResourceId, objects);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater=(LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row=inflater.inflate(R.layout.list_item,parent,false);
String[]items=getResources().getStringArray(R.array.counteries);
ImageView iv=(ImageView) row.findViewById(R.id.imageView1);
TextView tv=(TextView) row.findViewById(R.id.textView1);
tv.setText(items[position]);
if(items[position].equals("unitedstates")){
iv.setImageResource(R.drawable.usa);
}else if(items[position].equals("Russia")){
iv.setImageResource(R.drawable.russia);
}else if(items[position].equals("Japan")){
iv.setImageResource(R.drawable.japan);
}
// TODO Auto-generated method stub
return row;
}
}
}
LayoutInflater membuat objek View berdasarkan tata letak yang didefinisikan dalam XML. Ada beberapa cara berbeda untuk menggunakan LayoutInflater, termasuk membuat Tampilan kustom, menggembungkan tampilan Fragmen ke dalam tampilan Aktivitas, membuat Dialog, atau hanya menggembungkan tampilan file tata letak ke dalam suatu Aktivitas.
Ada banyak kesalahpahaman tentang bagaimana proses inflasi bekerja. Saya pikir ini berasal dari buruknya dokumentasi untuk metode mengembang (). Jika Anda ingin mempelajari tentang metode mengembang () secara rinci, saya menulis posting blog di sini:
https://www.bignerdranch.com/blog/understanding-androids-layoutinflater-inflate/
Inflater sebenarnya semacam konversi ke data, tampilan, contoh, untuk representasi UI yang terlihat ... ..ini memanfaatkan umpan data dari dari mungkin adaptor, dll. Secara terprogram. kemudian mengintegrasikannya dengan xml yang Anda tetapkan, yang memberi tahu bagaimana data harus diwakili di UI