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

Я бы хотел расширить свою простую 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, ... и т. д.

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

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

1 Ответ

2 голосов
/ 09 июля 2011

Я сделал это некоторое время назад. Использовал 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;

    }
...