Qu'est-ce que LayoutInflater dans Android faire?
-
28-09-2019 - |
Question
Quelle est l'utilisation de LayoutInflater
dans Android?
La solution
Lorsque vous utilisez une vue personnalisée dans un ListView
vous devez définir la mise en page de la ligne.
Vous créez un fichier XML où vous placez des widgets Android et que vous devez faire dans le code de l'adaptateur quelque chose comme ceci:
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;
}
En savoir plus dans le documentation officielle .
Autres conseils
LayoutInflater classe est utilisée pour la mise en page instancier XML fichier dans sa vue correspondante des objets.
En d'autres termes, il prend en entrée un fichier XML et construit la vue des objets de celui-ci.
Que LayoutInflator
faire?
Quand j'ai commencé la programmation Android, je suis vraiment confus par LayoutInflater
et findViewById
. Parfois, nous avons utilisé un et tantôt l'autre.
-
LayoutInflater
est utilisé pour créer un nouvel objetView
(ouLayout
) d'un de vos mises en page XML. -
findViewById
vous donne juste une référence à une vue que ce qui a déjà été créé. Vous pourriez penser que vous n'avez créé aucune vue, mais chaque fois que vous appelezsetContentView
dansonCreate
, la mise en page de l'activité ainsi que ses sous-vues gets gonflé (créé) dans les coulisses.
Donc, si la vue existe déjà, utilisez findViewById
. Sinon, créez avec un LayoutInflater
.
Exemple
Voici un mini-projet, je fait que montre à la fois LayoutInflater
et findViewById
en action. Sans code spécial, la mise en page se présente comme suit.
Le carré bleu est une mise en page personnalisée insérée dans la mise en page principale avec include
(voir pour plus). Il a été gonflé automatiquement parce qu'il fait partie de la vue du contenu. Comme vous pouvez le voir, sur le code il n'y a rien de spécial.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Le inflate de laisser maintenant (créer) une autre copie de notre mise en page personnalisée et ajoutez-en.
LayoutInflater inflater = getLayoutInflater();
View myLayout = inflater.inflate(R.layout.my_layout, mainLayout, false);
Pour gonfler la nouvelle mise en page de vue, tout ce que je n'étais dire gonfleur le nom de mon fichier XML (my_layout
), la mise en page de parent que je veux ajouter à (mainLayout
), et que je ne veux pas réellement ajouter encore (false
). (Je pourrais aussi mettre le parent à null
, mais les paramètres de configuration de la vue racine de ma mise en page personnalisée serait ignorée.)
Ici, il est à nouveau dans le contexte.
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);
}
}
Remarquez comment findViewById
est utilisé seulement après une mise en page a déjà été gonflé.
Supplementaire code
Voici le code XML pour l'exemple ci-dessus.
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>
Quand avez-vous besoin LayoutInflater
- La plupart du temps commun la plupart des gens utilisent est dans un
RecyclerView
. (Voir ces exemplesRecyclerView
pour une ou une grille .) Vous devez gonfler une nouvelle mise en page pour chaque élément visible unique dans la liste ou la grille. - Vous pouvez également utiliser un gonfleur de mise en page si vous avez une mise en page complexe que vous voulez ajouter par programme (comme nous l'avons fait dans notre exemple). Vous pouvez faire tout cela dans le code, mais il est beaucoup plus facile de le définir en XML d'abord, puis gonflez juste.
LayoutInflater.inflate () fournit un moyen de convertir un fichier xml res / layout / *. Définir une vue en une réelle utilisable Voir l'objet dans votre code source de l'application.
deux étapes: obtenir le gonfleur, puis gonfler la ressource
Comment obtenez-vous le gonfleur?
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Comment obtenez-vous la vue en supposant que le fichier xml est « list_item.xml »?
View view = inflater.inflate(R.layout.list_item, parent, false);
Voici un autre exemple similaire à la précédente, mais étendu pour démontrer davantage les paramètres se gonflent et se comportement dynamique, il peut fournir.
Supposons que votre ListView mise en ligne peut avoir un nombre variable de TextViews. Alors d'abord vous gonflez la vue de l'élément de base (comme l'exemple précédent), puis boucle ajouter dynamiquement TextViews à l'exécution. En utilisant Android. Layout_weight aligne parfaitement tout en plus
Voici les ressources mises en page:
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"/>
Remplacer getView méthode dans le prolongement de la classe 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;
}
Remarque différents appels de méthode décompressé:
inflater.inflate(R.layout.list_layout, null); // no parent
inflater.inflate(R.layout.schedule_layout, (ViewGroup) lst_item_view, false); // with parent preserving LayoutParams
Cette classe est utilisée dans un fichier XML de mise en page instancier dans ses objets View
correspondants. Il est jamais utilisé directement - ou l'utilisation getLayoutInflater()
getSystemService(String)
pour récupérer une instance standard LayoutInflater
qui est déjà relié au contexte actuel et correctement configuré pour l'appareil que vous utilisez sur. Par exemple:
LayoutInflater inflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
Référence: http://developer.android.com/reference/android/ vue / LayoutInflater.html
Gonflage des moyens de lecture du fichier XML qui décrit un agencement (ou élément GUI) et pour créer les objets réels qui correspondent à, et donc faire l'objet visible dans une application 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);
Ce fichier pourrait sauver comme 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>
Ce fichier pourrait sauver comme 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>
La classe MainActivity
enregistré en tant que 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();
}
});
}
}
Qu'est-ce gonfleur fait
Il faut une mise en page XML en entrée (par exemple) et le convertit en objet View.
Pourquoi besoin
Réfléchissons un scénario où nous devons créer un listview personnalisé. Maintenant, chaque ligne doit être personnalisée. Mais comment pouvons-nous le faire. Ce ne est pas possible d'attribuer une mise en page XML à une ligne de listview. Ainsi, nous créons un objet View. Ainsi, nous pouvons accéder aux éléments en elle (textview, imageview etc) et affecter également l'objet comme ligne de ListView
Alors, chaque fois que nous avons besoin d'assign objet type de vue quelque part et nous avons notre conception XML personnalisé nous convertissons juste à l'objet par gonfleur et l'utiliser.
ici est un exemple pour obtenir une référence pour la vue racine d'une mise en page, gonfler et l'utiliser avec setContentView (vue View)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater li=getLayoutInflater();
View rootView=li.inflate(R.layout.activity_main,null);
setContentView(rootView);
}
LayoutInflater est une classe utilisée pour fichier XML de mise en page instancier dans ses objets de vue correspondants qui peuvent être utilisés dans les programmes Java.
En termes simples, il y a deux façons de créer l'interface utilisateur dans Android. La première est une façon statique et une autre est dynamique ou par programme.
Supposons que nous ayons une mise en page simple main.xml ayant un textview
et un edittext
comme suit.
<?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>
Nous pouvons afficher cette disposition de manière statique
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Une façon dynamique de créer un moyen de vue de la vue ne figure pas dans notre main.xml mais nous voulons montrer ce en temps d'exécution. Par exemple, nous avons une autre XML dans le dossier de mise en page 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>
Nous voulons montrer à textbox moment de l'exécution au sein de notre interface utilisateur principale. Donc, ici, nous allons gonfler text.xml. Voyez comment:
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);
Ici, je l'ai utilisé getSystemService (String) pour récupérer une instance de LayoutInflater. Je peux utiliser getLayoutInflator () trop pour gonfler au lieu d'utiliser getSystemService (String) comme ci-dessous:
LayoutInflator inflater = getLayoutInflater();
TextView t = (TextView) inflater.inflate(R.layout.footer, null);
lLayout.addView(t);
Mise en page gonfleur est une classe qui lit la description de l'apparence xml et les convertir en Java Voir les objets.
ma liste de personnaliser l'espoir qu'il illustrent notion
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 est une composante fondamentale dans les applications. Vous devez l'utiliser tout le temps de transformer les fichiers XML dans des hiérarchies de vue.
LayoutInflater crée Afficher les objets en fonction mises en page définies en XML. Il y a plusieurs façons d'utiliser LayoutInflater, y compris la création de vues personnalisées, vues gonfler fragmenter en vue de l'activité, la création Dialogs, ou simplement gonfler un fichier de mise en page View dans une activité.
Il y a beaucoup d'idées fausses sur la façon dont fonctionne le processus d'inflation. Je pense que cela vient de pauvres de la documentation pour la méthode gonflent (). Si vous voulez en savoir plus sur la méthode inflate () en détail, je l'ai écrit un billet de blog à ce sujet ici:
https://www.bignerdranch.com/blog/understanding-androids -layoutinflater-gonflent /
Inflater en fait une sorte de conversion des données, des vues, des instances, à la représentation de l'interface utilisateur visible .. ..thus-il utilisation de flux de données dans de peut-être des adaptateurs, etc. programmation. puis l'intégrer avec un xml que vous avez défini, qui lui indique comment les données doivent être représentées dans l'interface utilisateur