将图像添加到ListView?

时间:2013-12-09 15:10:23

标签: android listview android-arrayadapter

我有一个列表视图,显示时间表。我想为每一行添加一个图像。我怎么能这样做?

这是我正在使用的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ListView
        android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

这是适配器:

ListView list = (ListView) v.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, times);
list.setAdapter(adapter);

1 个答案:

答案 0 :(得分:0)

在这里,我使用下面的布局文件用一个ImageView和三个TextView填充Listview。 这里当我们有listview图像然后我们在android中异步下载图像。然后从url创建位图并将其设置为imageview .so当你使用图像然后首先从url逐字节读取数据和图像有更多的咬文本,因此需要花时间加载listview。

<ImageView
    android:id="@+id/image"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_centerVertical="true"
    android:layout_margin="5dp"
    android:background="#444"
    android:padding="3dp" />

<TextView
    android:id="@+id/tvtitle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dip"
    android:layout_toLeftOf="@+id/tvdate"
    android:layout_toRightOf="@+id/image"
    android:maxLines="1"
    android:text="title"
    android:textColor="@android:color/black"
    android:textSize="15dip"
    android:textStyle="bold" />

<TextView
    android:id="@+id/tvdesc"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tvtitle"
    android:layout_toRightOf="@+id/image"
    android:ellipsize="end"
    android:maxLines="3"
    android:text="desc"
    android:textColor="@android:color/black"
    android:textSize="13dip" />

<TextView
    android:id="@+id/tvdate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginRight="5dp"
    android:layout_marginTop="5dip"
    android:text="date"
    android:textColor="@android:color/black"
    android:textSize="12dip" />

这里我们有行,在Adapter类中有三个Textview和imageview.so,我们在getView()方法中为这一行充气。

LayoutInflater inflater =(LayoutInflater)活动 .getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.row,null);

现在我们使用Viewholder在listview中添加行,以便在android中获得流畅的listview。

public static class ViewHolder {   public TextView tvTitle,tvDesc,tvDate;   private ImageView imgView;  }

现在为视图为null时为每一行创建ViewHolder的新对象。另外使用setTag(ViewHolder)将其设置为标记。

ViewHolder持有人; 如果(图== NULL){       holder = new ViewHolder();       view.setTag(保持器);    } 其他{       holder =(ViewHolder)view.getTag();   }

现在使用viewHolder对象,您可以从row.xml重新构建您的视图。

holder.tvTitle =(TextView)view.findViewById(R.id.tvtitle); holder.tvDesc =(TextView)view.findViewById(R.id.tvdesc); holder.tvDate =(TextView)view.findViewById(R.id.tvdate); holder.imgView =(ImageView)view.findViewById(R.id.image);

我们可以在这里设置每个行视图的值。

holder.tvTitle.setText( “标题”); holder.tvDesc.setText( “标题”); holder.tvDate.setText( “标题”); holder.imgView.setImageResource(R.drawable.icon);

然后返回getView方法的语句是view。 返回视图;

对于Mor信息您可以参考此链接:

http://samir-mangroliya.blogspot.in/p/android-image-listview.html