GridView 是 Android 中常用的布局控件之一,用于显示一组数据,并以网格形式排列。以下是 GridView 的基本使用步骤:

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.pingtaimeng.com/article/detail/15148/Android