如何创建自定义gridview如图所示

问题描述:

我是android编程的新手,学过基础知识。如何创建自定义gridview如图所示

现在,我想创建一个视图,如下面的链接通过java端而不是通过xml。

Example 2X2 Square Image

我可以使用按钮或图像中的XML来显示这样的图像。

但是,我想动态地通过java端,所以我不知道要通过java端来完成这个工作。

请指导我。谢谢。

+1

所以,你要我们写的代码吗? – Akshay

+0

所以你的问题是如何从Java代码设置网格?或者从Java代码中创建正方形(网格元素)? –

+0

@S Praveen Kumar是的,在此之后,我会尝试通过点击网格中的任何sqaure动态增加网格的大小。 也需要有网格正方形的随机颜色。 @Akshay这些是我最初的计划,我在这里采取一些指导。我不希望任何人为我编写代码。 – Nik

使用Recyclerview(LayoutManager是网格)

GridLayoutManager gridLayoutManager = new GridLayoutManager(this,2); 
     recylerview.setLayoutManager(gridLayoutManager); 

您可以在view.xml创建gridview象下面这样:

<GridView 
    android:id="@+id/grid_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:horizontalSpacing="16dp" 
    android:numColumns="2" 
    android:verticalSpacing="16dp" /> 

之后,你可以创建你所选择的customAdapter做任何事情你想要如下:

public class GridAdapter extends BaseAdapter { 

public GridAdapter() { 
    //constructor for your adapter 
} 

@Override 
public int getCount() { 
    return chargeProduct.getProducts().size(); 
} 

@Override 
public Object getItem(int position) { 
    return item; 
} 

@Override 
public long getItemId(int position) { 
    return id; 
} 

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

    LayoutInflater inflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View gridView; 

    if (convertView == null) { 

     gridView = new View(mContext); 

     gridView = inflater.inflate(R.layout.grid_item_view, null); 

    } else { 
     gridView = (View) convertView; 
    } 
    //Create view items and do the things you want here 

    return gridView; 
} 

y您还需要为每个网格项创建grid_item_view布局,并且它可以是您希望的任何布局。 ,最后你需要你的看法与这些连接到您的适配器线:

gridAdapter = new GridAdapter(); 
customGridView.setAdapter(gridAdapter); 

也可以参考这些教程就如何开始创建GridView控件

1. tutorialspoint

2. getting started on gridview

,并为您创建自定义适配器的GridView你可以参考这个:

creating a custom adapter for gridview

希望这会有所帮助。

+1

虽然这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供参考链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/评论/低质量帖/ 16396076) – Shiro

+0

tnx的说明,我编辑我的帖子,所以它现在看起来更好:) @ Shiro –

 List<Strings> rowListItem = getAllItemList(); 
     GridLayoutManager gLayout = new GridLayoutManager(this, 4); 
     RecyclerView rView = (RecyclerView)findViewById(R.id.recycler_view); 
     rView.setHasFixedSize(true); 
     rView.setLayoutManager(gLayout); 

欲了解更多请参考here