资源ID未返回正确的值

时间:2015-03-16 20:12:50

标签: android android-listview android-view android-resources android-drawable

我在ListView中显示图像时遇到了困难。

我想要的输出应该包含不同列表项的不同图像。 但是我得到的是:

Screenshot

正如您所看到的,正在显示的图标是相同的(预订)。 到目前为止我可以弄清楚的是itemImagesViews.setImageResource(itemsImages.getResourceId(position, R.drawable.booking))文件中的方法ItemAdapter.java没有返回预期的值。

这是回购:

https://github.com/amar0891/Aroma-Holiday

3 个答案:

答案 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>