我的应用中有ListView
.. ListView
可以包含文字,图片或两者。如果有图像,我想在第一行显示文本并在下一行显示图像集。我应该使用哪一个? ViewFlipper
或ViewPager
或其他什么?我一直在四处寻找如何做到这一点的例子。
任何指针都会非常有用!!
感谢。
编辑:我想在列表视图第二行的第一行和图片列表(3-5)中显示文字
答案 0 :(得分:1)
如果您使用的是自定义适配器(我认为您是这样),那么您必须在其中提供某种类型的数组。我不认为你可以从适配器本身向ListView添加另一行,所以我会考虑解析数组,或者你用来填充listview的任何数据。从那里,创建另一个数组,其中包含文本和图像集的单独条目(如果存在)。然后将最终数组输入适配器。使用带有JSONObjects的JSONArray可能会更好,因为您可以为所有条目设置标签。
然后,在getView()方法的适配器内部,检查条目类型是文本还是图像,并根据它更改它膨胀的xml布局。或者您可以使用相同的xml并使用setVisibility()控制不同的视图。
如果要使图像在列表项中水平滚动,则可能必须使用HorizontalScrollView。我还没有使用它,但我知道它可能会让你在其他滚动元素(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