Android - расширение ListActivity для добавления изображений для каждого элемента?

1

Я хотел бы расширить свой простой ListActivity, чтобы иметь маленькие изображения рядом с каждым элементом. Вот мой код:

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:minHeight="?android:attr/listPreferredItemHeight" /> 

MainActivity.java:

public class MainActivity extends ListActivity {


/** Called when the activity is first created. */
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    // Create an array of Strings, that will be put to our ListActivity
    String[] names = new String[] { "some", "list", "items", "which", "each", "have", "their", "own", "image"};


    this.setListAdapter(new ArrayAdapter<String>(this,R.layout.main, names));


}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    // Get the item that was clicked
    Object o = this.getListAdapter().getItem(position);
    String keyword = o.toString();
    Toast.makeText(this, "You selected: " + keyword, Toast.LENGTH_SHORT)
            .show();
}

}

И у меня есть 10 элементов (строк), и у каждого из них есть изображение, которое я хотел бы поставить рядом с ним, например itemImage1.png, itemImage2.png,... и т.д.

Как я могу это сделать?

Спасибо за любую помощь.

Теги:
image
listactivity

1 ответ

2
Лучший ответ

Я сделал это некоторое время назад. Используемый LazyLoader найден здесь lazyloader

Выглядит как ключевой код, переопределяя метод getView

 public static class ViewHolder{

        public TextView text;

        public ImageView image;

    }



    public View getView(int position, View convertView, ViewGroup parent) {

        View vi=convertView;

        ViewHolder holder;

        if(convertView==null){

            vi = inflater.inflate(R.layout.item, null);

            holder=new ViewHolder();

            holder.text=(TextView)vi.findViewById(R.id.text);;

            holder.image=(ImageView)vi.findViewById(R.id.image);

            vi.setTag(holder);

        }

        else

            holder=(ViewHolder)vi.getTag();



        holder.text.setText("item "+position);

        holder.image.setTag(data[position]);

        imageLoader.DisplayImage(data[position], activity, holder.image);

        return vi;

    }
  • 0
    Эй, спасибо, я просто не уверен, как это реализовать. Что такое файл item.xml? Что такое объект данных? И что это за строка: imageLoader.DisplayImage (data [position], активность, holder.image); ? Спасибо хоть
  • 0
    похоже, что эти данные являются строкой [] URL-адресов. imageLoader.DisplayImage примет первый аргумент (URL), загрузит изображение и загрузит его в третий аргумент (элемент списка). XML должен будет включать просмотр текста и просмотр изображений. Думайте об этом как о представлении одной строки вашего списка. Вам нужно будет передать действие и строку [] URL-адресов в действие списка. Если вы тоже хотите передать строку [] текста, это будет легко изменить. Я просто скачал код и покопался в нем; во всяком случае, вам должно быть легко реализовать это, даже не понимая слишком много деталей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню