1. 在布局文件中添加 GridView:
在 XML 布局文件中添加 GridView 控件:
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:columnWidth="100dp"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:padding="16dp"/>
上述属性的含义:
- numColumns: 指定每行显示的列数。
- columnWidth: 指定每列的宽度。
- verticalSpacing 和 horizontalSpacing: 指定垂直和水平方向的间隔。
- stretchMode: 指定当空间不足时如何拉伸列的宽度。这里设置为 columnWidth 表示按照指定的列宽度进行拉伸。
- gravity: 指定子项在网格中的对齐方式。
- padding: 指定 GridView 的内边距。
2. 创建适配器:
创建一个适配器来提供数据,并将数据与 GridView 绑定。
public class GridAdapter extends BaseAdapter {
private Context context;
private List<String> dataList;
public GridAdapter(Context context, List<String> dataList) {
this.context = context;
this.dataList = dataList;
}
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.grid_item_layout, parent, false);
viewHolder = new ViewHolder();
viewHolder.textView = convertView.findViewById(R.id.gridItemTextView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
String itemText = (String) getItem(position);
viewHolder.textView.setText(itemText);
return convertView;
}
static class ViewHolder {
TextView textView;
}
}
3. 创建网格项布局:
创建一个布局文件用于定义每个网格项的样式,例如 grid_item_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/gridItemTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold"
android:padding="10dp"
android:background="@drawable/grid_item_background" />
</LinearLayout>
4. 在 Activity 中使用 GridView:
在 Activity 中初始化 GridView 和适配器,然后将它们关联起来。
public class MainActivity extends AppCompatActivity {
private List<String> dataList;
private GridAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化数据源
dataList = new ArrayList<>();
for (int i = 1; i <= 20; i++) {
dataList.add("Item " + i);
}
// 初始化适配器
adapter = new GridAdapter(this, dataList);
// 初始化 GridView
GridView gridView = findViewById(R.id.gridView);
gridView.setAdapter(adapter);
// 设置 GridView 的点击事件
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedItem = (String) parent.getItemAtPosition(position);
Toast.makeText(MainActivity.this, "Selected Item: " + selectedItem, Toast.LENGTH_SHORT).show();
}
});
}
}
上述示例演示了如何使用 GridView,包括在布局文件中定义 GridView,创建适配器,定义网格项布局,以及在 Activity 中使用和处理点击事件。您可以根据需要进一步定制网格项的布局和样式。
转载请注明出处:http://www.zyzy.cn/article/detail/15148/Android