Vous pouvez faire quelque chose comme
public View getView(int position, View convertView, ViewGroup parent)
{
// Create a linear layout to hold other views
LinearLayout oItemViewLayout = new LinearLayout(mContext);
// ImageView
ImageView i = new ImageView(mContext);
i.setImageResource(mImageIds[position]);
i.setScaleType(ImageView.ScaleType.FIT_END);
i.setLayoutParams(new ListView.LayoutParams(60,60));
// Add ImageView to item view layout
oItemViewLayout.addView(i);
// TextView
TextView lblTextView = new TextView(mContext);
lblTextView.setText(mImageNames[position]);
// Add ImageView to item view layout
oItemViewLayout.addView(lblTextView);
return oItemViewLayout;
}
Si vous avez également défini un tableau de chaînes pour contenir les noms des images, peut-être comme
private String[] mImageNames = {"title of video3", "video5", "music2",};
Il serait encore plus facile si vous créez une disposition pour le ListItem et que vous le chargez pour créer la vue à la place
Cr eate une disposition appelée dire « mylistview.xml »
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/ITEMVIEW_imgImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/ITEMVIEW_lblText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
Vous pouvez ensuite faire la méthode getView()
comme celui-ci
public View getView(int position, View convertView, ViewGroup parent)
{
// Create a new view or recycle one if available
View oItemViewLayout;
if (convertView == null)
{
// New view needs to be created
oItemViewLayout = (View)LayoutInflater.from(mContext).inflate(R.layout.mylistview, parent, false);
}
else
{
// Recycle an existing view
oItemViewLayout = (View)convertView;
}
// ImageView
ImageView i = (ImageView)oItemViewLayout.findViewById(R.id.ITEMVIEW_imgImage);
i.setImageResource(mImageIds[position]);
// TextView
TextView lblTextView = (TextView)oItemViewLayout.findViewById(R.id.IITEMVIEW_lblText);
lblTextView.setText(mImageNames[position]);
return oItemViewLayout;
}
Ce ne sera pas seulement la vie plus facile en vous permettant de concevoir la vue en XML, mais il sera également plus efficace parce que vous allez recycler les vues qui ont disparu de l'écran mais qui sont toujours en mémoire parce que vous saisissez l'instance convertView
lorsqu'il y en a une.
Votre réponse est exactement ce que je cherchais. Merci –