В программировании для Android широко используются GridView и ListView, а GridView — лучший выбор для реализации диаграммы девяти дворцов. В этой статье рассказывается, как использовать GridView для реализации диаграммы девяти дворцов. GridView имеет множество применений. Наиболее распространенный метод в Интернете — реализация ImageAdapter для наследования BaseAdapter и последующее использование его для GridView. Подобные методы не будут повторяться в этой статье. Использование GridView, представленное в этой статье, очень похоже. к ListView, представленному ранее.
Давайте сначала посмотрим на результаты выполнения кода из этой статьи:
В эту статью необходимо добавить/изменить 3 файла: main.xml, night_item.xml и исходный код JAVA.
Исходный код main.xml выглядит следующим образом: это GirdView, используемый для загрузки элементов:
<?xml version="1.0"coding="utf-8"?><GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" " android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:columnWidth="90dp" android:stretchMode="columnWidth" android:gradity="center"/>
Вот краткое описание некоторых свойств:
android:numColumns="auto_fit", количество столбцов GridView установлено на автоматическое
android:columnWidth="90dp", ширина каждого столбца, равная ширине элемента.
android:stretchMode="columnWidth", масштабирование синхронизируется с размером ширины столбца
android:verticalSpacing="10dp", поле между двумя строками, например: расстояние между первой строкой (№0~№2) и второй строкой (№3~№5) составляет 10dp.
android:horizontalSpacing="10dp", поле между двумя столбцами.
Далее мы представляем night_item.xml. Этот XML очень похож на ImageItem.xml предыдущего ListView:
<?xml version="1.0"coding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom ="4dip" android:layout_width="fill_parent"> <ImageView android:layout_height="wrap_content" android:id="@+id/ItemImage" android:layout_width="wrap_content" android:layout_centerHorizontal="true"> </ImageView> <TextView android:layout_width="wrap_content" android:layout_below="@+id/ItemImage" android:layout_height="wrap_content" android:text="TextView01" android:layout_centerHorizontal="true" android:id="@+id/ItemText"> </TextView></RelativeLayout>
Наконец, есть исходный код JAVA, который очень похож на предыдущий исходный код JAVA ListView, но с более «выбранной» обработкой событий:
public void onCreate(Bundle saveInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);GridViewgridview = (GridView) findViewById(R.id.gridview);//Сгенерируем динамический массив и перенесем его в data ArrayList <HashMap<String, Object>> lstImageItem = новый ArrayList<HashMap<String, Object>>();for(int i=0;i<10;i++){ HashMap<String, Object> map = new HashMap<String, Object>(); map.put("ItemImage", R.drawable. icon);//Добавляем идентификатор ресурса изображения map.put("ItemText", "NO."+String.valueOf(i));//Создаем ItemText по серийному номеру lstImageItem.add(map);}//Сгенерируем элементы ImageItem <====> адаптера динамического массива, они соответствуют один к одному SimpleAdapter saImageItems = new SimpleAdapter(this, //Без объяснения lstImageItem,// Источник данных R.layout.night_item,//XML-реализация night_item//Динамический массив и подэлемент, соответствующий ImageItem new String[] {"ItemImage","ItemText"}, //Один ImageView и два идентификатора TextView в XML-файле ImageItem new int[] {R.id.ItemImage,R.id.ItemText});//Добавляем и отображаем GridView . setAdapter(saImageItems);//Добавляем обработку сообщений Gridview.setOnItemClickListener(new ItemClickListener());}//При щелчке по адаптеру (сенсорный экран или клавиатура) возвращаемый класс события щелчка по элементу ItemClickListener реализует OnItemClickListener { public void onItemClick(AdapterView<?> arg0,//AdapterView, где произошел щелчок, View arg1 ,//Представление внутри AdaptorView, по которому щелкнули int arg2,//Положение представления в адаптере long arg3//Идентификатор строки элемента, по которому был сделан щелчок) { //В этом случае arg2=arg3 HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2); //Показать все Select. ItemText элемента setTitle((String)item.get("ItemText" }}