GridView
Елемент GridView представляє відображення у вигляді таблиці — набору рядків і стовпців.
Основні атрибути GridView:
android:columnWidth: встановлює фіксовану ширину стовпців.android:gravity: встановлює вирівнювання вмісту всередині кожної комірки.android:horizontalSpacing: встановлює горизонтальні відступи між стовпцями.android:numColumns: встановлює кількість стовпців.android:stretchMode: встановлює, як стовпці будуть розтягуватись і займати простір контейнера. Може приймати такі значення:columnWidth: кожен стовпець розтягується рівномірно по всій ширині. Еквівалентно значенню 2.none: стовпці не розтягуються. Еквівалентно значенню 0.spacingWidth: між стовпцями утворюються відступи. Еквівалентно значенню 1.spacingWidthUniform: між стовпцями утворюються рівномірні відступи. Еквівалентно значенню 3.
android:verticalSpacing: встановлює вертикальні відступи між рядками.
Основні методи класу GridView:
int getColumnWidth(): повертає ширину стовпців.int getHorizontalSpacing(): повертає розмір горизонтального відступу.int getNumColumns(): повертає кількість стовпців.int getStretchMode(): повертає режим розтягування простору всередині грида.int getVerticalSpacing(): повертає розмір вертикального відступу.void setAdapter(ListAdapter adapter): встановлює адаптер для підключення до джерела даних.void setColumnWidth(int columnWidth): встановлює ширину стовпців.void setHorizontalSpacing(int horizontalSpacing): встановлює розмір горизонтального відступу.void setNumColumns(int numColumns): встановлює кількість стовпців.void setStretchMode(int stretchMode): встановлює режим розтягування простору всередині грида.void setVerticalSpacing(int verticalSpacing): встановлює розмір вертикального відступу.void setSelection(int position): встановлює поточний виділений елемент.
Визначимо GridView у activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<GridView
android:id="@+id/gridview"
android:layout_width="0dp"
android:layout_height="0dp"
android:numColumns="2"
android:verticalSpacing="16dp"
android:horizontalSpacing="16dp"
android:stretchMode="columnWidth"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
У даному випадку вказується, що грід буде мати 2 стовпці, які розтягуються рівномірно по всій ширині грида, а між комірками будуть відступи по горизонталі та вертикалі в 16 dp.
Тепер, як і в разі з ListView, треба встановити зв'язок з адаптером:
package com.example.listapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
String[] countries = { "Бразилия", "Аргентина", "Чили", "Колумбия", "Уругвай"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// отримуємо елемент GridView
GridView countriesList = findViewById(R.id.gridview);
// створюємо адаптер
ArrayAdapter<String> adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, countries);
countriesList.setAdapter(adapter);
AdapterView.OnItemClickListener itemListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(),"Ви вибрали "
+ parent.getItemAtPosition(position).toString(),
Toast.LENGTH_SHORT).show();
}
};
countriesList.setOnItemClickListener(itemListener);
}
}
Для обробки натискання в GridView застосовується слухач AdapterView.OnItemClickListener.
