12. Разработка приложений для ОС Android. Создание красивого списка дополненного картинками

1) Создадим новый XML файл list_item.xml типа Layout (LinearLayout).
2) Добавим картинку и текст. Сделаем горизонтальную ориентацию. Увеличим текст (Text Size = 30sp) и зададим ему отступ сверху (Margins Top = 5dp)
3) Положим картинки 100x100 в res/drawable-hdpi
4) Изменим код в Main.java

package com.example.lists;

import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class Main extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        setListAdapter(new MyAdapter(this
                , android.R.layout.simple_list_item_1
                , R.id.textView1
                , getResources().getStringArray(R.array.wallpapers)));
    }
    
    // локальный класс MyAdapter на базе старого ArrayAdapter 
    private class MyAdapter extends ArrayAdapter<String> {

        // конструктор  
        public MyAdapter(Context context, int resource, int textViewResourceId,
                String[] strings) {
            super(context, resource, textViewResourceId, strings);
            // TODO Auto-generated constructor stub
        }
        
        // метод
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            LayoutInflater inflater = (LayoutInflater) 
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            
            // будем использовать list_item.xml 
            // для создания строк в списке
            View row = inflater.inflate(R.layout.list_item, parent, false);
            
            // задаем массив строк, 
            // в котором будут содержаться названия картинок
            String[] items = getResources().getStringArray(R.array.wallpapers);
            
            // c помощью этих двух строк мы будем обращаться к 
            // отображению текста и картинок в строках нашего списка 
            ImageView image1 = (ImageView) row.findViewById(R.id.imageView1);
            TextView text1 = (TextView) row.findViewById(R.id.textView1);
            
            // значение position равно номеру строку в списке
            text1.setText(items[position]);
            
            if (items[position].equals("1")) {
                image1.setImageResource(R.drawable.first);
            }
            else if (items[position].equals("2")) {
                image1.setImageResource(R.drawable.second);
            }
            else if (items[position].equals("3")) {
                image1.setImageResource(R.drawable.third);
            }
            
            return row;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}


5) Запустим приложение: