Quelle est l'utilisation de LayoutInflater
dans Android?
Lorsque vous utilisez une vue personnalisée dans un ListView
, vous devez définir la disposition des lignes. Vous créez un xml où vous placez les widgets Android, puis dans le code de l'adaptateur, vous devez procéder de la manière suivante:
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;
}
Plus d'informations dans le documentation officielle .
LayoutInflater La classe est utilisée pour instancier un fichier XML de présentation dans les objets View correspondants.
En d'autres termes, il prend en entrée un fichier XML et construit les objets View à partir de celui-ci.
LayoutInflator
?Lorsque j'ai commencé à programmer Android, j'étais vraiment confus par LayoutInflater
et findViewById
. Parfois, nous utilisions l'un et parfois l'autre.
LayoutInflater
est utilisé pour créer un nouvel objet View
(ou Layout
) à partir de l'une de vos présentations XML.findViewById
vous donne simplement une référence à une vue déjà créée. Vous pensez peut-être que vous n'avez pas encore créé de vues, mais chaque fois que vous appelez setContentView
dans onCreate
, la présentation de l'activité, ainsi que ses sous-vues, sont gonflées (créées) en arrière-plan.Donc, si la vue existe déjà, utilisez findViewById
. Sinon, créez-le avec un LayoutInflater
.
Voici un mini-projet que j'ai réalisé et qui montre à la fois LayoutInflater
et findViewById
en action. Sans code spécial, la disposition ressemble à ceci.
Le carré bleu est une disposition personnalisée insérée dans la disposition principale avec include
(voir ici pour plus d'informations). Il a été gonflé automatiquement car il fait partie de la vue du contenu. Comme vous pouvez le constater, le code n’a rien de spécial.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Maintenant, gonflons (créons) une autre copie de notre mise en page personnalisée et ajoutons-la.
LayoutInflater inflater = getLayoutInflater();
View myLayout = inflater.inflate(R.layout.my_layout, mainLayout, false);
Pour gonfler la nouvelle présentation, tout ce que j'ai fait est de lui indiquer le nom de mon fichier xml (my_layout
), la présentation parente à laquelle je veux ajouter (mainLayout
) et que je ne souhaite pas réellement l'ajouter encore (false
). (Je pourrais également définir le parent sur null
, mais les paramètres de présentation de la vue racine de ma présentation personnalisée seraient ignorés.)
Le voici à 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);
}
}
Notez que findViewById
est utilisé uniquement après qu’un modèle ait été gonflé.
Voici le 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>
RecyclerView
. (Voir ces exemples RecyclerView
pour un liste ou un grille .) Vous devez gonfler une nouvelle présentation pour chaque élément visible de la liste ou de la grille.LayoutInflater.inflate () fournit un moyen de convertir un fichier res/layout/*. Xml définissant une vue en un objet View utilisable dans le code source de votre application.
deux étapes de base: obtenir le gonfleur puis gonfler la ressource
Comment obtenez-vous l'inflateur?
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Comment obtenez-vous la vue en supposant que le fichier XML soit "list_item.xml"?
View view = inflater.inflate(R.layout.list_item, parent, false);
Voici un autre exemple similaire au précédent, mais étendu pour démontrer davantage les paramètres de gonflage et le comportement dynamique qu’il peut fournir.
Supposons que votre disposition de ligne ListView puisse avoir un nombre variable de TextViews. Commencez donc par gonfler la vue de l’élément de base (comme dans l’exemple précédent), puis effectuez une boucle en ajoutant dynamiquement TextViews au moment de l’exécution. En utilisant Android: layout_weight aligne en outre tout parfaitement.
Voici les ressources de mise 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 la méthode getView dans l'extension 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;
}
Note différents appels de méthode de gonflage:
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 pour instancier un fichier XML de mise en page dans les objets View
correspondants. Il n'est jamais utilisé directement - utilisez getLayoutInflater()
ou getSystemService(String)
pour récupérer une instance standard LayoutInflater
déjà connectée au contexte actuel et correctement configurée pour le périphérique utilisé. Par exemple:
LayoutInflater inflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
Référence: http://developer.Android.com/reference/Android/view/LayoutInflater.html
Gonfler signifie lire le fichier XML qui décrit une présentation (ou un élément d'interface graphique) et créer les objets qui lui correspondent, et ainsi rendre 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 être enregistré sous le format 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 être enregistré sous le format 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ée sous le nom 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();
}
});
}
}
Quel gonfleur fait
Il prend une mise en page XML comme entrée (par exemple) et la convertit en objet View.
Pourquoi besoin
Pensons à un scénario dans lequel nous devons créer une liste personnalisée. Maintenant, chaque ligne doit être personnalisée. Mais comment pouvons-nous le faire. Il n'est pas possible d'attribuer une mise en page XML à une ligne de listview. Nous créons donc un objet View. Ainsi, nous pouvons accéder aux éléments qu'il contient (textview, imageview, etc.) et également affecter l'objet en tant que ligne de listview.
Donc, chaque fois que nous devons assigner un objet de type vue quelque part et que nous avons notre conception XML personnalisée, nous le convertissons simplement en objet par inflater et l’utilisons.
LayoutInflater est une classe utilisée pour instancier un fichier XML de présentation dans les objets de vue correspondants, qui peut être utilisée dans les programmes Java. En termes simples, il existe deux façons de créer une interface utilisateur dans Android. L’une est statique et l’autre est dynamique ou programmatique. Supposons que nous ayons une disposition 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 mise en page de manière statique en
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Une manière dynamique de créer une vue signifie que la vue n'est pas mentionnée dans notre fichier main.xml, mais nous voulons montrer cela avec le temps d'exécution. Par exemple, nous avons un autre fichier XML dans le dossier de présentation sous le nom 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 afficher cette zone de texte au moment de l'exécution dans notre interface utilisateur principale. Nous allons donc ici gonfler text.xml. Regardez 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, j'ai utilisé getSystemService (String) pour récupérer une instance LayoutInflater. Je peux aussi utiliser getLayoutInflator () 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);
voici un exemple pour obtenir une référence pour la vue racine d'une mise en page, pour la gonfler et l'utiliser avec setContentView (View View)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater li=getLayoutInflater();
View rootView=li.inflate(R.layout.activity_main,null);
setContentView(rootView);
}
Layout inflater est une classe qui lit la description de l'apparence xml et la convertit en objets View basés sur Java.
Inflater en fait une sorte de conversion en données, vues, instances, en représentation visible de l'interface utilisateur .. ..mais elle utilise les données en flux depuis peut-être des adaptateurs, etc. par programme. puis en l'intégrant à un xml que vous avez défini, qui indique comment les données doivent être représentées dans l'interface utilisateur
LayoutInflater crée des objets View basés sur des dispositions définies en XML. Il existe différentes manières d’utiliser LayoutInflater, notamment la création de vues personnalisées, l’agrandissement des vues fragmentées en vues d’activités, la création de dialogues ou simplement le gonflement d’une vue de fichier de mise en forme dans une activité.
Il y a beaucoup d'idées fausses sur le fonctionnement du processus d'inflation. Je pense que cela vient de la médiocrité de la documentation de la méthode inflate (). Si vous voulez en savoir plus sur la méthode inflate (), j'ai écrit un article à ce sujet dans le blog:
https://www.bignerdranch.com/blog/understanding-androids-layoutinflater-inflate/
LayoutInflater est un composant fondamental d'Android. Vous devez l’utiliser tout le temps pour transformer les fichiers XML en hiérarchies de vues.
ma liste de personnalisation espère que cela illustre le concept
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;
}
}
}