Android - GridView : Specify Column Span

后端 未结 4 1952
长情又很酷
长情又很酷 2020-12-04 02:38

How can you specify a column span in an android\'s gridview?

I have a gridview that displays 3 images for each row. Sometimes, there are images that have to span 2 r

4条回答
  •  囚心锁ツ
    2020-12-04 03:09

    If you still want to use a GridView, you can hide one of the cells and extended the width of the one next to it so it spans the entire width. This can be done in your RowAdapter.

    private static LayoutInflater inflater = null;
    
    public class GridRowAdapter extends BaseAdapter
    {
        private String[] imageURLArray;
    
        public GridRowAdapter(String[] imageURLArray)
        {
            this.imageURLArray = imageURLArray;
    
            if(inflater == null)
            {
                inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            }
        }
    
        public int getCount()
        {
            int iCount = Math.max(imageURLArray.length, 1);
    
            //Reduce the count of items expected by the GridView because 1 item will take up 2 cells 
            iCount--;
    
            return iCount;
        }
    
        public Object getItem(int position)
        {
            return position;
        }
    
        public long getItemId(int position)
        {
            return position;
        }
    
        public View getView(int position, View convertView, ViewGroup parent)
        {
            View v = convertView;
    
            try
            {
                if(parent != null)
                {
                    if(position < 2)
                    {
                        v = inflater.inflate(R.layout.grid_item_feature, parent, false);
    
                        ViewGroup.LayoutParams params = v.getLayoutParams();
    
                        if(position == 0)
                        {
                            //Extend height and width of the cell on the left
                            params.height = (itemsGridView.getWidth());
                            params.width = (itemsGridView.getWidth());
    
                            //Write code to show Image or Text
                            String strImage = imageURLArray[position];
    
                        }
                        else
                        {
                            //You must extend the height of this cell too even though you're going to make it disappear
                            params.height = (itemsGridView.getWidth());
    
                            //Hide cell on the right
                            v.setVisibility(View.GONE);
                        }
                    }
                    else
                    {
                        //Reduce the index of the position because we skipped an item 
                        position--;
    
                        v = inflater.inflate(R.layout.grid_item, parent, false);
    
                        //Write code to show Image or Text
                        String strImage = imageURLArray[position];
                    }
                }
    
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
    
            return v;
        }
    
    
    }
    

提交回复
热议问题