建立Gridview視圖

來源:互聯網
上載者:User

標籤:

細想自己接觸android也有一個月了,一直想寫blog來敦促自己的進步,供自己之後翻閱,同時想著自己在編寫例子的時候會出現各種問題,所以建立blog來記錄自己的學習進程,也可以作分享之用。好了,廢話不多說了,這篇blog主要是講解的如何建立gridview的視圖。如效果所示:

要實現圖中的功能,

先介紹gridview幾個屬性:

GridView的一些屬性android:numColumns="auto_fit"- - - - - 列數設定為自動android:columnWidth="90dp"- -  - - -每列的寬度,也就是item的寬度android:stretchMode="columnWidth"- -  - - -縮放與列寬大小同步android:verticalSpacing ="10dp"- - -  - - -垂直邊距android:horizontalSpacing="10dp"- - - -  - -水平邊距

第一步:將案例所需的四個圖片(注意名字一定要是英文)copy到res/drawable檔案夾下。

 

第二步:在main_activity中添加一個gridview,其中布局代碼如下

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#000"tools:context="com.example.amos.gridviewdemo.MainActivity">    <GridViewandroid:id="@+id/gview"android:layout_width="match_parent"android:layout_height="wrap_content"android:numColumns="auto_fit"<span style="white-space:pre"></span>//列數設定為自動android:columnWidth="80dp"android:stretchMode="columnWidth"><span style="white-space:pre"></span>//將展開模式調整跟寬度一樣    </GridView></LinearLayout></span>
第三步:因為所做中每個item項中都有一個imageiew和textview的控制項,所以我們要單獨建立一個item的布局以便傳入gridview中。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"<span style="white-space:pre"></span>//這一項的作用是讓imageview控制項和textview控制項在豎直方向對齊android:gravity="center"android:padding="10dp">
    <ImageViewandroid:src="#9932CC"android:id="@+id/image"android:layout_width="60dp"android:layout_height="60dp" />    <TextViewandroid:id="@+id/text"android:layout_marginTop="5dp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#ffffff"android:text="文字"/></LinearLayout>
第四步:接著就是最關鍵的在MainActivity中填寫代碼。主要分為a.準備資料來源 b.建立適配器 c.配置適配器

</pre><pre name="code" class="java">import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.GridView;import android.widget.SimpleAdapter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends Activity {    private GridView gview;    private List<Map<String, Object>> data_list;    private SimpleAdapter sim_adapter;    private int[] icon = {R.drawable.sns_qqfriends_icon, R.drawable.sns_sina_icon,            R.drawable.sns_weixin_icon, R.drawable.sns_weixin_timeline_icon};    private String[] iconName = {"QQ", "Sina", "Weixin", "SNS"};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        gview = (GridView) findViewById(R.id.gview);        //建立List        data_list = new ArrayList<Map<String, Object>>();        //擷取資料        getData();        //建立適配器        String[] from = {"image", "text"};        int[] to = {R.id.image, R.id.text};        sim_adapter = new SimpleAdapter(this, data_list, R.layout.item, from, to);        //配置適配器        gview.setAdapter(sim_adapter);          }    public List<Map<String, Object>> getData() {//icon和iconName的長度是相同的,這裡任選其一就可以        for (int i = 0; i < icon.length; i++) {            Map<String, Object> map = new HashMap<String, Object>();            map.put("image", icon[i]);            map.put("text", iconName[i]);            data_list.add(map);        }        return data_list;    }}


 

關於setadapter的用法,可以參見官方的API文檔,裡面的解釋是這樣的。

public void setAdapter (ListAdapter adapter) 

 Sets the data behind this GridView. 

 Parameters 

adapter the adapter providing the grid‘s data

好了,結束,這樣就可以直接運行了。

最後,拓展一下,比如現在我有這個表徵圖了,那我怎麼樣去點擊表徵圖,然後讓他有效果呢,這種情況下,我們可以插入一個

setOnItemClickListener()的方法。那麼現在我們在java代碼檔案夾下建立兩個activity,如(這是我隨意建立的,目的只是讓他有東西能顯示)

那麼接著在Main_Activity中添加setOnItemClickListener方法,這裡我只添加了兩個點擊事件,如下示:

 gview.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                //在這裡處理每一個item的單擊事件                switch (position){                    case 0:                        startActivity(new Intent(MainActivity.this,AnotherAty.class));                        break;                    case 1:                        startActivity(new Intent(MainActivity.this,LoginActivity.class));                        break;                    default:                        break;                }            }        });

最後,附上我的源碼

點擊開啟連結



建立Gridview視圖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.