我在ListView中显示图像时遇到了困难。
我想要的输出应该包含不同列表项的不同图像。 但是我得到的是:
正如您所看到的,正在显示的图标是相同的(预订)。
到目前为止我可以弄清楚的是itemImagesViews.setImageResource(itemsImages.getResourceId(position, R.drawable.booking))
文件中的方法ItemAdapter.java
没有返回预期的值。
这是回购:
答案 0 :(得分:0)
我不知道ItemAdapter.java中的代码。但基本上你只需要这样做,如果你想看到预订图标:
itemImagesViews.setImageResource(R.drawable.booking);
注意:我不知道你使用getResourceId()设置了什么代码,这可能是主要问题。
Google推荐的另一个好方案是:
Resources resources = getResources();
itemImagesViews. setImageDrawable(resources.getDrawable(R.drawable.myfirstimage));
注意:itemImagesViews是你的ImageView。对于大图像,setImageDrawable方法应该更有效率。
答案 1 :(得分:0)
我看到了你的代码
if (convertView == null){
you are setting the image only when the convert view is null but not
always the convertView is null
}
所以你应该做的是
View view=convertView
if (view == null){
view= activity.getLayoutInflater().inflate(R.layout.item_adapter_view, null);
}
TextView itemDetailsViews = (TextView) view .findViewById(R.id.item_details);
itemDetailsViews.setText(itemDetails[position]);
TextView itemsDescriptionsViews = (TextView) view .findViewById(R.id.item_description);
itemsDescriptionsViews.setText(itemDescriptions[position]);
ImageView itemImagesViews = (ImageView) view.findViewById(R.id.item_image);
itemImagesViews.setImageResource(itemsImages.getResourceId(position, R.drawable.booking));
Log.d(this.getClass().getName().toString(), "" + itemsImages.getResourceId(position, R.drawable.booking));
Log.d(this.getClass().getName().toString(), "" + R.drawable.booking);
如果不在if
中,你必须在if后面分配你的图像视图和textview答案 2 :(得分:0)
我检查了你的文件,getResourceId
总是返回默认值的原因是因为数组中的项不是资源,它们只是字符串。你应该在数组中添加对资源的引用。试试这个:
<array name="items_images">
<item>@drawable/plane</item>
....
</array>