在Listview中显示图片 - Android

时间:2013-01-07 13:07:40

标签: android listview imageview

我的应用中有ListView .. ListView可以包含文字,图片或两者。如果有图像,我想在第一行显示文本并在下一行显示图像集。我应该使用哪一个? ViewFlipperViewPager或其他什么?我一直在四处寻找如何做到这一点的例子。

任何指针都会非常有用!!

感谢。

编辑:我想在列表视图第二行的第一行和图片列表(3-5)中显示文字

2 个答案:

答案 0 :(得分:1)

如果您使用的是自定义适配器(我认为您是这样),那么您必须在其中提供某种类型的数组。我不认为你可以从适配器本身向ListView添加另一行,所以我会考虑解析数组,或者你用来填充listview的任何数据。从那里,创建另一个数组,其中包含文本和图像集的单独条目(如果存在)。然后将最终数组输入适配器。使用带有JSONObjects的JSONArray可能会更好,因为您可以为所有条目设置标签。

然后,在getView()方法的适配器内部,检查条目类型是文本还是图像,并根据它更改它膨胀的xml布局。或者您可以使用相同的xml并使用setVisibility()控制不同的视图。

如果要使图像在列表项中水平滚动,则可能必须使用Horizo​​ntalScrollView。我还没有使用它,但我知道它可能会让你在其他滚动元素(ListView)中使用滚动元素时遇到一些问题。

答案 1 :(得分:0)

创建带有图片的ListView有3个主要部分: 1-在主布局中创建一个简单的列表视图           

2-创建自定义列表视图项目布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="horizontal" >
<ImageView
 android:id="@+id/img"
 android:layout_width="50dp"
 android:layout_height="50dp"/>
 <TextView
 android:id="@+id/txt"
 android:layout_width="wrap_content"
 android:layout_height="50dp" />
</LinearLayout>

然后创建一个自定义ListView类:

private final Activity context; // the context view of the list
private final String[] countries; // the list of countries
private final Integer[] imageId; // the list of images that you already uploaded to your @Drawable file (res/drawable-xdpi/)

之后会有一个构造函数来创建customView对象:

//class constructor
public CustomList(Activity context,String[] countries, Integer[] imageId) 
{
super(context, R.layout.list_item, countries);
this.context = context;
this.countries = countries;
this.imageId = imageId;
}

customView类有一个返回项视图的getView方法:

@Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = context.getLayoutInflater();
View rowView= inflater.inflate(R.layout.list_item, null, true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.txt);
ImageView imageView = (ImageView) rowView.findViewById(R.id.img);
txtTitle.setText(countries[position]);
imageView.setImageResource(imageId[position]);
return rowView;
}

最后在mainActivity中为列表创建适配器:

 yourList.setAdapter(new CustomList(MainActivity.this, countries, imageId));

您可以在此处查看完整的sourceCode并将其下载here