2015-10-30 113 views
0

我正在使用自定义Gridview,看起来像架子。我显示3列 当有来自服务器的5个项目中,Gridview的第6位是空如何在Gridview中没有项目时显示默认图像?

我想表明它架线图像

Grid_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<com.andexert.library.RippleView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/ripple_grid" 
    android:layout_width="match_parent" 
    android:layout_height="90dp" 
    android:background="@drawable/im_ninja_delights_rack" 
    android:paddingBottom="20dp" 
    app:rv_centered="true" 
    app:rv_framerate="5" 
    app:rv_rippleDuration="50"> 
    <ImageView 
     android:id="@+id/image_ninja_delights" 
     android:layout_width="75dp" 
     android:layout_height="75dp" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/chocolates_image" 
     android:layout_marginTop="15dp" 
     android:visibility="visible"></ImageView> 
</com.andexert.library.RippleView> 

enter image description here

im_ninja_delights_rack.png

enter image description here

+1

为什么不使用Piccaso库为图像设置占位符? –

+0

你在网格中只有五个元素。您需要填充其中的倍数,以便可以使用默认图像在网格视图中创建其余项目。 –

+0

检查你的数组列表大小 - 我想列出5个项目所以最后一个不是fillup ..如果你得到arraylist大小6,然后检查图像的网址。在Piccaso库中的onError监听器方法来处理你的代码。在OnErrorListener中设置你的默认图像 – Sanket990

回答

1

使用piccaso库设置占位符为您的ImageView

这样

Picasso.with(this) 
.load("IMAGE URL") 
.placeholder(R.drawable.default_image) // optional 
.error(R.drawable.error_image)   // optional 
.into(imageView); 
+0

我需要做什么与Gridview的android:stretchMode =“columnWidth”? –

+0

占位符不会在我的情况下工作..因为机架图像是根布局的背景。我希望这个背景图像在列 –

0

如果你想显示每行3张图片,请确保您的图片列表是3的倍数。

然后,将默认图像设置为图像eviews,您正在使用虚夸xml。

做一些类似的,

在您的活动,呼叫转接器构造为

gridView.setAdapter(new BaseAdapterClass(context, actual_data_list, actual_data_list.size() + number_to_make_size_multiple_of_3)); 

然后,在你的适配器类,

public int getCount(){ 
     return multiple_of_3_passed_from_activity; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     if(position < actual_data_list.size()) { 
      // Set your image to imageview 
     } 

     return convertView; 
    } 
+0

列中没有项目是grid_item.xml的根布局背景时仍可见。我想让机架拉伸 –

+0

你有没有试过这个代码? –

+0

它会拉伸机架,只是你需要的方式.. –

-1

1

难道你的意思是?

我在这里的解决方案是添加一些虚假的物品来填补机架的行,并禁用onClick为他们。

+0

是的......先生.. :) –

1

我正在相同的条件下使用本

适配器类

1.

public int getCount() 
{ 

    return mItems.size()+1; 
} 

2.

public View getView(int position, View convertView, ViewGroup parent) 
     { 

      LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View gridView = inflater.inflate(R.layout.test_grid_layout, null); 
      ImageView imageView = (ImageView) gridView.findViewById(R.id.grid_item_image); 
      if(position == mItems.size()) 
      { 
       imageView.setImageResource(R.drawable.blank_img); 
      } 
      else 
       { 
       imageView.setImageURI(Uri.parse(mItems.get(position))); 
      } 
      return gridView; 
     } 

enter image description here

拉st one is blank images