问题描述
我想有一个gridview类似这样
I want to have a gridview similar to this
每个奇数行将有大尺寸的两个图像和偶数行将会有四个小images.How我能做到这一点?
Every odd numbered row will have two images of big size and even numbered rows will have four smaller images.How can I achieve this?
推荐答案
我有类似的东西,我解决了新RecyclerView。
I have something similar and i solved with the new RecyclerView.
我创建了一个片段与一个 RecyclerView 。RecyclerView XML的:
I created a Fragment with an a RecyclerView.RecyclerView on xml:
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/filter_subtypes" android:layout_width="match_parent" android:layout_height="match_parent" />
在你的碎片/活动(在我的片段的情况下OnViewCreated)。我觉得RecyclerView并设置适配器 - 从正常适配器类继承的 RecyclerView.Adapter&LT;您的视图Holder类> 的 - 然后,我创建了一个GridLayoutManager
On your Fragment/Activity (OnViewCreated in my fragment case).I find the RecyclerView and set an Adapter- a normal Adapter class inherit from RecyclerView.Adapter< YOUR VIEW HOLDER class >-And then i create a GridLayoutManager
final GridLayoutManager mng_layout = new GridLayoutManager(this.getActivity(), TOTAL_CELLS_PER_ROW/*In your case 4*/);
然后我重写此方法来设置列的动态数字(细胞)
Then i override this method to set a dynamic numbers of columns (cells)
mng_layout.setSpanSizeLookup( new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch( adapterSubtype.getItemViewType(position) ) {
case FilterSubtypesAdapter.TYPE_LOW:
return TOTAL_CELLS_PER_ROW;
case FilterSubtypesAdapter.TYPE_HIGH:
return 2;
default:
return -1;
}
}
});
myRecyclerView.setLayoutManager(mng_layout);
有了这个,你会得到你行的单元格的动态的数字。
With this you will get dynamic numbers of cell on your rows.
还有:然后,如果你正在使用您的适配器在同一视图/类型来看,你会得到相同的W&安培; H查看。您将需要创建2 XML视图TYPE_HIGH和其他视图TYPE_LOW。
EXTRA:Then if you are using the same view/type view on your adapter, you will get the same w & h view. You will need to create 2 xml views for TYPE_HIGH and other view for TYPE_LOW.
那么,在您的适配器,则需要有2个类型的数据(1高图像和1低图像)。你必须覆盖此方法
So, in your adapter, you need to have 2 kind of data (1 for high images and 1 for low images).You must override this methods
@Override
public SubtypeViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = null;
if (viewType==TYPE_HIGH) {
view = inflater.inflate(R.layout.item_image_high, parent, false);
} else {
view = inflater.inflate(R.layout.item_image_low, parent, false);
}
return new SubtypeViewHolder(view, viewType);
}
@Override
public int getItemViewType(int position) {
return (list.get(position).getType()==Subtype_type.HIGH) ? TYPE_HIGH : TYPE_LOW;
}
我希望我是清楚的,任何问题告诉我。
I hope i was clear, any problem tell me.
这篇关于如何设置不同的列于Android的gridview的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!