天天看點

Android UI(二)DridView的菜單第一步:實作Guid Item第二步:通過定義的擴充卡SimpleAdapter 将你需要的Item add進GridView總結

效果圖:

Android UI(二)DridView的菜單第一步:實作Guid Item第二步:通過定義的擴充卡SimpleAdapter 将你需要的Item add進GridView總結

首先确定的是,裡面有四個元素。每個元素的組合為 圖檔+文字。是以我們先定義一個xml:

/androidui2/res/layout/main_menu_item.xml:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<code>&lt;?</code><code>xml</code> <code>version="1.0" encoding="utf-8"?&gt;</code>

<code>    </code><code>android:layout_width="match_parent"</code>

<code>    </code><code>android:layout_height="match_parent"</code>

<code>    </code><code>android:orientation="vertical" &gt;</code>

<code>    </code><code>&lt;</code><code>imageview</code>

<code>        </code><code>android:id="@+id/itemimageview"</code>

<code>        </code><code>android:layout_width="fill_parent"</code>

<code>        </code><code>android:layout_height="wrap_content"</code>

<code>        </code><code>android:layout_gravity="center"/&gt;</code>

<code>    </code><code>&lt;</code><code>textview</code>

<code>        </code><code>android:id="@+id/itemtextview"</code>

<code>        </code><code>android:gravity="center"/&gt;</code>

<code>&lt;/</code><code>linearlayout</code><code>&gt;</code>

先在視圖中定義gridview:

/androidui2/res/layout/activity_main.xml

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

<code>    </code><code>android:paddingbottom="@dimen/activity_vertical_margin"</code>

<code>    </code><code>android:paddingleft="@dimen/activity_horizontal_margin"</code>

<code>    </code><code>android:paddingright="@dimen/activity_horizontal_margin"</code>

<code>    </code><code>android:paddingtop="@dimen/activity_vertical_margin"</code>

<code>    </code><code>tools:context=".mainactivity" &gt;</code>

<code>    </code><code>&lt;</code><code>linearlayout</code>

<code>            </code><code>android:layout_width="match_parent"</code>

<code>            </code><code>android:layout_height="wrap_content"</code>

<code>            </code><code>android:layout_marginleft="12dp"</code>

<code>            </code><code>android:layout_marginright="12dp"</code>

<code>            </code><code>android:background="@color/white"</code>

<code>            </code><code>android:orientation="horizontal"</code>

<code>            </code><code>android:gravity="top"&gt;</code>

<code>            </code> 

<code>            </code><code>&lt;</code><code>gridview</code>

<code>                </code><code>android:id="@+id/gridview_main_menu"</code>

<code>                </code><code>android:layout_width="fill_parent"</code>

<code>                </code><code>android:layout_height="wrap_content"</code>

<code>                </code><code>android:columnwidth="90dp"</code>

<code>                </code><code>android:stretchmode="columnwidth"</code>

<code>                </code><code>android:numcolumns="4"</code>

<code>                </code><code>android:horizontalspacing="10dp"</code>

<code>                </code><code>android:gravity="center_horizontal"</code>

<code>                </code><code>&gt;</code>

<code>            </code><code>&lt;/</code><code>gridview</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>linearlayout</code><code>&gt;</code>

<code>&lt;/</code><code>relativelayout</code><code>&gt;</code>

然後activity核心代碼:

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

<code>package com.example.androidui2;</code>

<code>import java.util.arraylist;</code>

<code>import java.util.hashmap;</code>

<code>import java.util.list;</code>

<code>import android.os.bundle;</code>

<code>import android.app.activity;</code>

<code>import android.view.menu;</code>

<code>import android.view.view;</code>

<code>import android.widget.adapterview;</code>

<code>import android.widget.gridview;</code>

<code>import android.widget.simpleadapter;</code>

<code>import android.widget.toast;</code>

<code>import android.widget.adapterview.onitemclicklistener;</code>

<code>public class mainactivity extends activity</code>

<code>{</code>

<code>    </code><code>private gridview mainmenugridview;</code>

<code>    </code><code>private int[] mainmenuimageres = {r.drawable.circle,r.drawable.circle,r.drawable.circle,r.drawable.circle};</code>

<code>    </code><code>private string[] mainmenustrs  = {"撥号","所有聯系人","使用說明","退出"};</code>

<code>    </code> 

<code>    </code><code>@override</code>

<code>    </code><code>protected void oncreate(bundle savedinstancestate)</code>

<code>    </code><code>{</code>

<code>        </code><code>super.oncreate(savedinstancestate);</code>

<code>        </code><code>setcontentview(r.layout.activity_main);</code>

<code>        </code><code>mainmenugridview = (gridview)findviewbyid(r.id.gridview_main_menu);</code>

<code>        </code> 

<code>        </code><code>initview();</code>

<code>    </code><code>}</code>

<code>    </code><code>// init views</code>

<code>    </code><code>private void initview()</code>

<code>        </code><code>// init main-menu</code>

<code>        </code><code>list&lt;</code><code>hashmap</code><code>&lt;string, object&gt;&gt; datas = new arraylist&lt;</code><code>hashmap</code><code>&lt;string,object&gt;&gt;();</code>

<code>        </code><code>int length = mainmenustrs.length;</code>

<code>        </code><code>for (int i = 0; i &lt;</code><code>length</code><code>; i++)</code>

<code>        </code><code>{</code>

<code>            </code><code>hashmap&lt;string, object&gt; map = new hashmap&lt;</code><code>string</code><code>, object&gt;();</code>

<code>            </code><code>map.put("itemimageview", mainmenuimageres[i]);</code>

<code>            </code><code>map.put("itemtextview", mainmenustrs[i]);</code>

<code>            </code><code>datas.add(map);</code>

<code>        </code><code>}</code>

<code>        </code><code>simpleadapter menuadapter = new simpleadapter(</code>

<code>                </code><code>mainactivity.this,datas,</code>

<code>                </code><code>r.layout.main_menu_item,</code>

<code>                </code><code>new string[]{"itemimageview","itemtextview"},</code>

<code>                </code><code>new int[]{r.id.itemimageview,r.id.itemtextview} );</code>

<code>        </code><code>mainmenugridview.setadapter(menuadapter);</code>

<code>        </code><code>mainmenugridview.setonitemclicklistener(new mainmenuitemonclick());</code>

<code>    </code><code>// main menu item on click function</code>

<code>    </code><code>public class mainmenuitemonclick implements onitemclicklistener</code>

<code>        </code><code>/** arg0 : the adapterview where the click happened </code>

<code>        </code><code>*   arg1 : the view within the adapterview that was clicked</code>

<code>        </code><code>*   arg2 : the position of the view in the adapter</code>

<code>        </code><code>*   arg3 : the row id of the item that was clicked</code>

<code>        </code><code>**/</code>

<code>        </code><code>public void onitemclick(adapterview&lt;?&gt; arg0, view arg1, int arg2,</code>

<code>                </code><code>long arg3)</code>

<code>            </code><code>hashmap&lt;</code><code>string</code><code>, object&gt; item = (hashmap&lt;</code><code>string</code><code>, object&gt;)arg0.getitematposition(arg2);</code>

<code>            </code><code>if (item.get("itemtextview").equals(mainmenustrs[0]))</code>

<code>            </code><code>{</code>

<code>                 </code><code>toast.maketext(getapplicationcontext(), mainmenustrs[0], </code>

<code>                            </code><code>toast.length_short).show(); </code>

<code>            </code><code>}</code>

<code>            </code><code>if (item.get("itemtextview").equals(mainmenustrs[1]))</code>

<code>                 </code><code>toast.maketext(getapplicationcontext(), mainmenustrs[1], </code>

<code>            </code><code>if (item.get("itemtextview").equals(mainmenustrs[2]))</code>

<code>                 </code><code>toast.maketext(getapplicationcontext(), mainmenustrs[2], </code>

<code>            </code><code>if (item.get("itemtextview").equals(mainmenustrs[3]))</code>

<code>                 </code><code>toast.maketext(getapplicationcontext(), mainmenustrs[3], </code>

<code>    </code><code>public boolean oncreateoptionsmenu(menu menu)</code>

<code>        </code><code>// inflate the menu; this adds items to the action bar if it is present.</code>

<code>        </code><code>getmenuinflater().inflate(r.menu.main, menu);</code>

<code>        </code><code>return true;</code>

<code>}</code>

解釋:

定義所需要的  item 數組:

<code>private int[] mainmenuimageres = {r.drawable.circle,r.drawable.circle,r.drawable.circle,r.drawable.circle};</code>

初始化用simpleadapter添加

<code>simpleadapter menuadapter = new simpleadapter(</code>

然後添加動作的時候,我們巧妙的擷取到itemimageview的值進行判斷,然後動作。

<code>hashmap&lt;</code><code>string</code><code>, object&gt; item = (hashmap&lt;</code><code>string</code><code>, object&gt;)arg0.getitematposition(arg2);</code>

gridview 可以作為平面化菜單的好東西。

繼續閱讀