Android - 扩展ListActivity以为每个项目添加图像?

时间:2011-07-09 18:23:26

标签: java android xml image listactivity

我想扩展我的简单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 个答案:

答案 0 :(得分: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;

    }