Na programação Android, GridView e ListView são layouts de múltiplos controles comumente usados, e GridView é a primeira escolha para implementar o Diagrama dos Nove Palácios. Este artigo apresenta como usar o GridView para implementar o Diagrama dos Nove Palácios! GridView tem muitos usos. O método mais comumente introduzido na Internet é implementar um ImageAdapter para herdar BaseAdapter e então usá-lo para GridView. Métodos como este não serão repetidos neste artigo. ao ListView apresentado anteriormente.
Vamos primeiro dar uma olhada nos resultados da execução do código deste artigo:
Este artigo precisa adicionar/modificar 3 arquivos: main.xml, night_item.xml e código-fonte JAVA.
O código fonte main.xml é o seguinte, é um GirdView, usado para carregar Itens:
<?xml version="1.0" encoding="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:gravity="center"/>
Aqui está uma breve introdução a algumas das propriedades:
android:numColumns="auto_fit", o número de colunas do GridView é definido como automático
android:columnWidth="90dp", a largura de cada coluna, que é a largura do Item
android:stretchMode="columnWidth", o dimensionamento é sincronizado com o tamanho da largura da coluna
android:verticalSpacing="10dp", a margem entre duas linhas, por exemplo: o espaçamento entre a linha um (NO.0~NO.2) e a linha dois (NO.3~NO.5) é 10dp
android:horizontalSpacing="10dp", a margem entre duas colunas.
A seguir, apresentamos night_item.xml. Este XML é muito semelhante ao ImageItem.xml do ListView anterior:
<?xml version="1.0" encoding="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>
Por fim, existe o código-fonte JAVA, que é muito semelhante ao código-fonte JAVA do ListView anterior, mas com manipulação de eventos mais "selecionados":
public void onCreate(Bundle saveInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);GridView gridview = (GridView) findViewById(R.id.gridview);//Gerar um array dinâmico e transferi-lo para o dados ArrayList <HashMap<String, Object>> lstImageItem = new 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);//Adicione o ID do recurso de imagem map.put("ItemText", "NO."+String.valueOf(i));//Faça ItemText de acordo com o número de série lstImageItem.add(map);}//Gera os elementos ImageItem <====> do adaptador da matriz dinâmica, os dois correspondem um a um SimpleAdapter saImageItems = new SimpleAdapter(this, //Sem explicação lstImageItem,// Fonte de dados R. layout.night_item,//implementação XML de night_item//matriz dinâmica e subitem correspondente a ImageItem new String[] {"ItemImage","ItemText"}, //Um ImageView e dois IDs de TextView no arquivo XML ImageItem new int[] {R.id.ItemImage,R.id.ItemText});//Adicione e exiba o gridview . setAdapter(saImageItems);//Adiciona processamento de mensagem gridview.setOnItemClickListener(new ItemClickListener());}//Quando o AdapterView é clicado (tela sensível ao toque ou teclado), a classe de evento de clique do item retornado ItemClickListener implementa OnItemClickListener{ public void onItemClick(AdapterView<?> arg0,//O AdapterView onde o clique aconteceu Ver arg1 ,//A visualização dentro do AdapterView que foi clicada int arg2,//A posição da visualização no adaptador long arg3//O ID da linha do item que foi clicado) { //Neste caso arg2=arg3 HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2); ItemText do item setTitle((String)item.get("ItemText"));