Android 行中具有不同列宽的GridView

Android 行中具有不同列宽的GridView,android,gridview,Android,Gridview,我有一个GridView,我需要在其中显示图像。我应用了以下逻辑: If 1 Photo : 1 row and 1 col and full width image. If 2 Photos : 1 row and 2 cols with equal width of both images (half of screen width) If 3 photos: 2 rows. 1st row will be having 1 col (1 image with full width) and

我有一个GridView,我需要在其中显示图像。我应用了以下逻辑:

If 1 Photo : 1 row and 1 col and full width image.
If 2 Photos : 1 row and 2 cols with equal width of both images (half of screen width)
If 3 photos: 2 rows. 1st row will be having 1 col (1 image with full width)
and 2nd row will be having 2 images with equal width (half of screen width)

If 4 or more photos : width will be half for each column.
我已经处理了其余的案例,唯一的问题是当我有3张照片时设置案例3。 我想要2行1张全宽照片,第2行2张等半宽照片,但我的代码在第一行给我2张等半宽照片,在第二行给我1张半宽照片

我只需要使用Gridview,请告诉我是否可以使用Gridview。我已经问过这个问题,但没有得到任何回应。 如果你有任何想法,请帮助我

非常感谢你

我希望有以下布局:

参见下面的代码

我已经创建了演示和工作良好

  rv = (RecyclerView) findViewById(R.id.rv);
        final MyAdapter adapter = new MyAdapter();
        rv.setAdapter(adapter);
        GridLayoutManager mLayoutManager = new GridLayoutManager(this, 2);
        rv.setLayoutManager(mLayoutManager);

        mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                if (adapter.getItemCount() == 1) {
                    return 2;
                } else if (adapter.getItemCount() == 2) {
                    return 1;
                } else if (adapter.getItemCount() == 3) {
                    if (position == 0) {
                        return 2;
                    } else {
                        return 1;
                    }
                } else {

                    return 1;

                }


            }
        });

请参阅尝试在GridLayoutManager中使用RecyclerView。您可以在GridLayoutManager中根据需要设置跨度。感谢上面的链接。我已经检查过了,但它在我的情况下不起作用。我在一个Recyclerview中使用这个Gridview,并且在每个列表项中都有图像。我有一个变量为每个列表,它给出了照片计数。我根据这个光计数设置列数。因此,如果我将有3张照片,在该列表项中,我想显示1张全宽照片和其他2张半宽照片。我想在列表项的同一位置设置不同的列数。如果您有任何想法,请帮助我。我已经尝试过使用GridLayoutManager进行Recyclerview,但根据我的情况,它不起作用。我设置了一个特定位置的跨距大小,我想在同一位置设置不同的2列宽度。使用带有GridLayoutManager的Recyclerview,我可以将位置1的列数设置为2,或将位置2的列数设置为3,但如果在位置1处,我想将1行设置为1列,将第2行设置为2列,我无法执行此操作。我可以使用Gridview执行此操作吗。如果这里有人有任何想法,请帮助我。非常感谢你的帮助,谢谢你的努力。我想问的一个问题是,如果在位置0上,我有3张照片。现在,我想显示一张照片,全宽表示跨度计数1,其余2张照片,我想显示2张半宽照片。我该怎么做,我该怎么做。如果你知道如何实现它,请帮助我。非常感谢您的所有帮助。这已经包括了
if(adapter.getItemCount()==3){if(position==0){return 2;}else{return 1;}
我尝试了您建议的方法,但它总是将整个宽度分成两部分。就像我想在photocount==1时显示一幅全宽图像,所以我从getSpanSize方法返回了1作为跨度计数,但它将宽度分成两部分,只显示一半照片,一半宽度未使用,并显示为空白。让我们来看看。@NJ,你能帮我解决gridview中的一个问题吗