Android Samples
修订版 | 34c102de51e618a0f0fab9dc4da164860295549a (tree) |
---|---|
时间 | 2014-06-09 04:20:35 |
作者 | Masahiko, SAWAI <say@user...> |
Commiter | Masahiko, SAWAI |
Added listview-layout-sample module
@@ -0,0 +1,25 @@ | ||
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<manifest | |
3 | + xmlns:android="http://schemas.android.com/apk/res/android" | |
4 | + package="com.example.hello.android.listview_layout_sample" | |
5 | + android:versionCode="1" | |
6 | + android:versionName="1.0" | |
7 | +> | |
8 | + <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="19" /> | |
9 | + | |
10 | + <application android:label="@string/app_name"> | |
11 | + | |
12 | + <activity | |
13 | + android:name="MainActivity" | |
14 | + android:label="@string/app_name" | |
15 | + > | |
16 | + <intent-filter> | |
17 | + <action android:name="android.intent.action.MAIN" /> | |
18 | + <category android:name="android.intent.category.LAUNCHER" /> | |
19 | + </intent-filter> | |
20 | + </activity> | |
21 | + | |
22 | + <activity android:name="LayoutSampleActivity" /> | |
23 | + | |
24 | + </application> | |
25 | +</manifest> |
@@ -0,0 +1,46 @@ | ||
1 | + | |
2 | +all : package | |
3 | + | |
4 | +#################### build | |
5 | + | |
6 | +compile : | |
7 | + mvn $@ | |
8 | + | |
9 | +gen : | |
10 | + mvn android:generate-sources | |
11 | + | |
12 | +package : | |
13 | + mvn $@ | |
14 | + | |
15 | +release : | |
16 | + mvn clean -Prelease package | |
17 | + | |
18 | +install : | |
19 | + mvn $@ | |
20 | + | |
21 | +deploy : | |
22 | + mvn package android:deploy | |
23 | + | |
24 | +undeploy : | |
25 | + mvn android:undeploy | |
26 | + | |
27 | +rebuild : | |
28 | + mvn clean package | |
29 | + | |
30 | +redeploy : | |
31 | + mvn clean package android:deploy | |
32 | + | |
33 | +#################### emulator | |
34 | + | |
35 | +start : | |
36 | + mvn android:emulator-start | |
37 | + | |
38 | +stop : | |
39 | + mvn android:emulator-stop | |
40 | + | |
41 | +#################### | |
42 | +dist : | |
43 | + mvn assembly:assembly | |
44 | + | |
45 | +clean : | |
46 | + mvn $@ |
@@ -0,0 +1,16 @@ | ||
1 | +! listview-layout-sample | |
2 | + | |
3 | +ListView の List Item で利用できるレイアウトが、いくつか Android 標準として | |
4 | +提供されている。これらは以下のパッケージと定数名で提供される。 | |
5 | + | |
6 | +* android.R.layout.*list_item* | |
7 | + | |
8 | +提供されているレイアウトをリフレクションにより一覧表示して、 | |
9 | +選択したレイアウトを用いて、名前一覧の ListView を表示する。 | |
10 | + | |
11 | +標準で提供されるレイアウトで使われる View の id は以下の通り。 | |
12 | + | |
13 | +* android.R.id.text1 | |
14 | +* android.R.id.text2 | |
15 | +* android.R.id.icon | |
16 | + |
@@ -0,0 +1,142 @@ | ||
1 | +<?xml version="1.0" encoding="UTF-8" ?> | |
2 | +<project | |
3 | + xmlns="http://maven.apache.org/POM/4.0.0" | |
4 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
5 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" | |
6 | +> | |
7 | + <modelVersion>4.0.0</modelVersion> | |
8 | + <groupId>com.example.hello</groupId> | |
9 | + <artifactId>listview-layout-sample</artifactId> | |
10 | + <packaging>apk</packaging> | |
11 | + <version>1.0.0</version> | |
12 | + <name>ListView Layout Sample</name> | |
13 | + <url>http://www.example.com/listview-layout-sample/</url> | |
14 | + | |
15 | + <parent> | |
16 | + <groupId>com.example.hello</groupId> | |
17 | + <artifactId>android-samples</artifactId> | |
18 | + <version>1.0.0</version> | |
19 | + </parent> | |
20 | + | |
21 | + <dependencies> | |
22 | + | |
23 | + <dependency> | |
24 | + <groupId>android</groupId> | |
25 | + <artifactId>android</artifactId> | |
26 | + <version>1.5_r4</version> | |
27 | + <!-- | |
28 | + <version>1.5_r3</version> | |
29 | + <version>1.5_r4</version> | |
30 | + <version>1.6_r2</version> | |
31 | + <version>2.1.2</version> | |
32 | + <version>2.1_r1</version> | |
33 | + <version>2.2.1</version> | |
34 | + <version>2.3.1</version> | |
35 | + <version>2.3.3</version> | |
36 | + <version>4.0.1.2</version> | |
37 | + --> | |
38 | + <scope>provided</scope> | |
39 | + </dependency> | |
40 | + | |
41 | + <dependency> | |
42 | + <groupId>junit</groupId> | |
43 | + <artifactId>junit</artifactId> | |
44 | + <scope>test</scope> | |
45 | + </dependency> | |
46 | + </dependencies> | |
47 | + | |
48 | + <build> | |
49 | + <sourceDirectory>src</sourceDirectory> | |
50 | + | |
51 | + <plugins> | |
52 | + <plugin> | |
53 | + <groupId>com.jayway.maven.plugins.android.generation2</groupId> | |
54 | + <artifactId>android-maven-plugin</artifactId> | |
55 | + <configuration> | |
56 | + <sdk> | |
57 | + <!--<path>${env.ANDROID_HOME}</path>--> | |
58 | + <platform>4</platform> | |
59 | + </sdk> | |
60 | + </configuration> | |
61 | + <extensions>true</extensions> | |
62 | + </plugin> | |
63 | + | |
64 | + <!-- mvn compile --> | |
65 | + <plugin> | |
66 | + <groupId>org.apache.maven.plugins</groupId> | |
67 | + <artifactId>maven-compiler-plugin</artifactId> | |
68 | + <configuration> | |
69 | + <source>1.5</source> | |
70 | + <target>1.5</target> | |
71 | + <encoding>UTF-8</encoding> | |
72 | + </configuration> | |
73 | + </plugin> | |
74 | + | |
75 | + <!-- mvn assembly:assembly --> | |
76 | + <plugin> | |
77 | + <groupId>org.apache.maven.plugins</groupId> | |
78 | + <artifactId>maven-assembly-plugin</artifactId> | |
79 | + <configuration> | |
80 | + <descriptorRefs> | |
81 | + <!-- | |
82 | + <descriptorRef>jar-with-dependencies</descriptorRef> | |
83 | + <descriptorRef>bin</descriptorRef> | |
84 | + <descriptorRef>src</descriptorRef> | |
85 | + --> | |
86 | + <descriptorRef>project</descriptorRef> | |
87 | + </descriptorRefs> | |
88 | + </configuration> | |
89 | + </plugin> | |
90 | + | |
91 | + <!-- mvn resources:resources --> | |
92 | + <plugin> | |
93 | + <groupId>org.apache.maven.plugins</groupId> | |
94 | + <artifactId>maven-resources-plugin</artifactId> | |
95 | + <configuration> | |
96 | + <encoding>UTF-8</encoding> | |
97 | + </configuration> | |
98 | + </plugin> | |
99 | + | |
100 | + <!-- mvn site --> | |
101 | + <plugin> | |
102 | + <groupId>org.apache.maven.plugins</groupId> | |
103 | + <artifactId>maven-site-plugin</artifactId> | |
104 | + <configuration> | |
105 | + <locales>en</locales> | |
106 | + <inputEncoding>UTF-8</inputEncoding> | |
107 | + <outputEncoding>UTF-8</outputEncoding> | |
108 | + | |
109 | + <reportPlugins> | |
110 | + <plugin> | |
111 | + <groupId>org.apache.maven.plugins</groupId> | |
112 | + <artifactId>maven-project-info-reports-plugin</artifactId> | |
113 | + </plugin> | |
114 | + | |
115 | + <!-- mvn javadoc:javadoc --> | |
116 | + <plugin> | |
117 | + <groupId>org.apache.maven.plugins</groupId> | |
118 | + <artifactId>maven-javadoc-plugin</artifactId> | |
119 | + <configuration> | |
120 | + <charset>utf-8</charset> | |
121 | + </configuration> | |
122 | + </plugin> | |
123 | + </reportPlugins> | |
124 | + </configuration> | |
125 | + </plugin> | |
126 | + | |
127 | + </plugins> | |
128 | + | |
129 | + <!-- mvn resources:resources --> | |
130 | + <resources> | |
131 | + <resource> | |
132 | + <directory>res</directory> | |
133 | + <filtering>false</filtering> | |
134 | + <includes> | |
135 | + <include>**/*.properties</include> | |
136 | + </includes> | |
137 | + </resource> | |
138 | + </resources> | |
139 | + </build> | |
140 | + | |
141 | + | |
142 | +</project> |
@@ -0,0 +1,20 @@ | ||
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<FrameLayout | |
3 | + xmlns:android="http://schemas.android.com/apk/res/android" | |
4 | + android:layout_width="fill_parent" | |
5 | + android:layout_height="fill_parent" | |
6 | + android:padding="4dip" | |
7 | +> | |
8 | + <ListView | |
9 | + android:id="@android:id/list" | |
10 | + android:layout_width="fill_parent" | |
11 | + android:layout_height="fill_parent" | |
12 | + /> | |
13 | + <TextView | |
14 | + android:id="@android:id/empty" | |
15 | + android:layout_width="wrap_content" | |
16 | + android:layout_height="wrap_content" | |
17 | + android:layout_gravity="center" | |
18 | + android:text="@string/no_data" | |
19 | + /> | |
20 | +</FrameLayout> | |
\ No newline at end of file |
@@ -0,0 +1,31 @@ | ||
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<resources> | |
3 | + <array name="names"> | |
4 | + <item>Alice</item> | |
5 | + <item>Bob</item> | |
6 | + <item>Charlie</item> | |
7 | + <item>David</item> | |
8 | + <item>Eve</item> | |
9 | + <item>Frank</item> | |
10 | + <item>George</item> | |
11 | + <item>Harvey</item> | |
12 | + <item>Ivan</item> | |
13 | + <item>Justin</item> | |
14 | + <item>Kyle</item> | |
15 | + <item>Linda</item> | |
16 | + <item>Matilda</item> | |
17 | + <item>Natalia</item> | |
18 | + <item>Oscar</item> | |
19 | + <item>Pat</item> | |
20 | + <item>Quincy</item> | |
21 | + <item>Rachel</item> | |
22 | + <item>Steave</item> | |
23 | + <item>Trent</item> | |
24 | + <item>Urien</item> | |
25 | + <item>Victor</item> | |
26 | + <item>Walter</item> | |
27 | + <item>Xenia</item> | |
28 | + <item>Yuriya</item> | |
29 | + <item>Zoe</item> | |
30 | + </array> | |
31 | +</resources> |
@@ -0,0 +1,5 @@ | ||
1 | +<?xml version="1.0" encoding="utf-8"?> | |
2 | +<resources> | |
3 | + <string name="app_name">ListView Item Layout Sample</string> | |
4 | + <string name="no_data">NO DATA</string> | |
5 | +</resources> |
@@ -0,0 +1,99 @@ | ||
1 | +/* | |
2 | + * The MIT License | |
3 | + * | |
4 | + * Copyright 2014 Masahiko, SAWAI <masahiko.sawai@gmail.com>. | |
5 | + * | |
6 | + * Permission is hereby granted, free of charge, to any person obtaining a copy | |
7 | + * of this software and associated documentation files (the "Software"), to deal | |
8 | + * in the Software without restriction, including without limitation the rights | |
9 | + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
10 | + * copies of the Software, and to permit persons to whom the Software is | |
11 | + * furnished to do so, subject to the following conditions: | |
12 | + * | |
13 | + * The above copyright notice and this permission notice shall be included in | |
14 | + * all copies or substantial portions of the Software. | |
15 | + * | |
16 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
17 | + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
18 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
19 | + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
20 | + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
21 | + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
22 | + * THE SOFTWARE. | |
23 | + */ | |
24 | +package com.example.hello.android.listview_layout_sample; | |
25 | + | |
26 | +import android.app.ListActivity; | |
27 | +import android.os.Bundle; | |
28 | +import android.widget.ListView; | |
29 | +import android.widget.SimpleAdapter; | |
30 | +import java.util.ArrayList; | |
31 | +import java.util.HashMap; | |
32 | +import java.util.List; | |
33 | +import java.util.Map; | |
34 | + | |
35 | +public class LayoutSampleActivity extends ListActivity | |
36 | +{ | |
37 | + | |
38 | + public static final String EXTRA_LAYOUT_ID = LayoutSampleActivity.class.getPackage().getName() + ".EXTRA_LAYOUT_ID"; | |
39 | + public static final String EXTRA_LAYOUT_NAME = LayoutSampleActivity.class.getPackage().getName() + ".EXTRA_LAYOUT_NAME"; | |
40 | + private static final int DEFAULT_LAYOUT_ID = android.R.layout.simple_list_item_2; | |
41 | + private static final String DEFAULT_LAYOUT_NAME = "simple_list_item_2"; | |
42 | + private static final String MAPPING_KEY_NAME = "name"; | |
43 | + private static final String MAPPING_KEY_EMAIL = "email"; | |
44 | + private static final String MAPPING_KEY_ICON = "icon"; | |
45 | + private static final String[] MAPPING_FROM = | |
46 | + { | |
47 | + MAPPING_KEY_ICON, | |
48 | + MAPPING_KEY_NAME, | |
49 | + MAPPING_KEY_EMAIL, | |
50 | + }; | |
51 | + private static final int[] MAPPING_TO = | |
52 | + { | |
53 | + android.R.id.icon, | |
54 | + android.R.id.text1, | |
55 | + android.R.id.text2, | |
56 | + }; | |
57 | + private List<Map<String, String>> userList; | |
58 | + | |
59 | + @Override | |
60 | + protected void onCreate(Bundle savedInstanceState) | |
61 | + { | |
62 | + super.onCreate(savedInstanceState); | |
63 | + setContentView(R.layout.list_activity); | |
64 | + | |
65 | + int listItemLayoutID = getIntent().getExtras().getInt(EXTRA_LAYOUT_ID, DEFAULT_LAYOUT_ID); | |
66 | + String listItemLayoutName = getIntent().getExtras().getString(EXTRA_LAYOUT_NAME); | |
67 | + if (listItemLayoutName == null || listItemLayoutName.length() == 0) | |
68 | + listItemLayoutName = DEFAULT_LAYOUT_NAME; | |
69 | + setTitle(listItemLayoutName); | |
70 | + | |
71 | + // initialize list adapter | |
72 | + SimpleAdapter simpleAdapter = new SimpleAdapter(this, getUserList(), | |
73 | + listItemLayoutID, MAPPING_FROM, MAPPING_TO); | |
74 | + | |
75 | + ListView listView = (ListView) findViewById(android.R.id.list); | |
76 | + listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); | |
77 | + | |
78 | + setListAdapter(simpleAdapter); | |
79 | + } | |
80 | + | |
81 | + private List<Map<String, String>> getUserList() | |
82 | + { | |
83 | + if (userList == null) | |
84 | + { | |
85 | + // initialize userList | |
86 | + userList = new ArrayList<Map<String, String>>(); | |
87 | + String[] userNames = getResources().getStringArray(R.array.names); | |
88 | + for (String name : userNames) | |
89 | + { | |
90 | + Map<String, String> user = new HashMap<String, String>(); | |
91 | + user.put(MAPPING_KEY_NAME, name); | |
92 | + user.put(MAPPING_KEY_EMAIL, name.toLowerCase() + "@example.com"); | |
93 | + user.put(MAPPING_KEY_ICON, String.valueOf(android.R.drawable.sym_def_app_icon)); | |
94 | + userList.add(user); | |
95 | + } | |
96 | + } | |
97 | + return userList; | |
98 | + } | |
99 | +} |
@@ -0,0 +1,111 @@ | ||
1 | +/* | |
2 | + * The MIT License | |
3 | + * | |
4 | + * Copyright 2014 Masahiko, SAWAI <masahiko.sawai@gmail.com>. | |
5 | + * | |
6 | + * Permission is hereby granted, free of charge, to any person obtaining a copy | |
7 | + * of this software and associated documentation files (the "Software"), to deal | |
8 | + * in the Software without restriction, including without limitation the rights | |
9 | + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
10 | + * copies of the Software, and to permit persons to whom the Software is | |
11 | + * furnished to do so, subject to the following conditions: | |
12 | + * | |
13 | + * The above copyright notice and this permission notice shall be included in | |
14 | + * all copies or substantial portions of the Software. | |
15 | + * | |
16 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
17 | + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
18 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
19 | + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
20 | + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
21 | + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
22 | + * THE SOFTWARE. | |
23 | + */ | |
24 | +package com.example.hello.android.listview_layout_sample; | |
25 | + | |
26 | +import android.app.ListActivity; | |
27 | +import android.content.Intent; | |
28 | +import android.os.Bundle; | |
29 | +import android.util.Log; | |
30 | +import android.view.View; | |
31 | +import android.widget.AdapterView; | |
32 | +import android.widget.AdapterView.OnItemClickListener; | |
33 | +import android.widget.ArrayAdapter; | |
34 | +import android.widget.ListView; | |
35 | +import java.lang.reflect.Field; | |
36 | +import java.util.ArrayList; | |
37 | +import java.util.List; | |
38 | + | |
39 | +public class MainActivity extends ListActivity | |
40 | + implements OnItemClickListener | |
41 | +{ | |
42 | + | |
43 | + public static final String LOG_TAG = "XXX"; | |
44 | + private static final String[] LIST_ITEM_LAYOUT_NAMES; | |
45 | + private static final Integer[] LIST_ITEM_LAYOUT_ID; | |
46 | + | |
47 | + static | |
48 | + { | |
49 | + Class layoutClass = android.R.layout.class; | |
50 | + List<String> layoutNameList = new ArrayList<String>(); | |
51 | + List<Integer> layoutIdList = new ArrayList<Integer>(); | |
52 | + for (Field field : layoutClass.getDeclaredFields()) | |
53 | + { | |
54 | + try | |
55 | + { | |
56 | + String layoutName = field.getName(); | |
57 | + if (layoutName.indexOf("list_item") > 0) | |
58 | + { | |
59 | + int layoutID = field.getInt(null); | |
60 | + layoutNameList.add(layoutName); | |
61 | + layoutIdList.add(layoutID); | |
62 | + } | |
63 | + } | |
64 | + catch (IllegalArgumentException ex) | |
65 | + { | |
66 | + Log.e("android.R:ContenColorDBHelper", "access denied.", ex); | |
67 | + } | |
68 | + catch (IllegalAccessException ex) | |
69 | + { | |
70 | + Log.e("android.R:ContenColorDBHelper", "access denied.", ex); | |
71 | + } | |
72 | + } | |
73 | + LIST_ITEM_LAYOUT_NAMES = layoutNameList.toArray(new String[0]); | |
74 | + LIST_ITEM_LAYOUT_ID = layoutIdList.toArray(new Integer[0]); | |
75 | + | |
76 | + } | |
77 | + | |
78 | + @Override | |
79 | + protected void onCreate(Bundle savedInstanceState) | |
80 | + { | |
81 | + super.onCreate(savedInstanceState); | |
82 | + setContentView(R.layout.list_activity); | |
83 | + | |
84 | + // Init ArrayAdapter | |
85 | + ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, | |
86 | + android.R.layout.simple_list_item_1, | |
87 | + LIST_ITEM_LAYOUT_NAMES); | |
88 | + setListAdapter(arrayAdapter); | |
89 | + | |
90 | + // set item click listener | |
91 | + ListView listView = (ListView) findViewById(android.R.id.list); | |
92 | + listView.setOnItemClickListener(this); | |
93 | + | |
94 | + } | |
95 | + | |
96 | + public void onItemClick(AdapterView<?> parentView, View itemView, int position, long id) | |
97 | + { | |
98 | + Log.d(LOG_TAG, "onClick() : layout name =>" + LIST_ITEM_LAYOUT_NAMES[position] | |
99 | + + ", layout id =>" + LIST_ITEM_LAYOUT_ID[position]); | |
100 | + | |
101 | + startSampleListViewActivity(position); | |
102 | + } | |
103 | + | |
104 | + private void startSampleListViewActivity(int position) | |
105 | + { | |
106 | + Intent intent = new Intent(MainActivity.this, LayoutSampleActivity.class); | |
107 | + intent.putExtra(LayoutSampleActivity.EXTRA_LAYOUT_NAME, LIST_ITEM_LAYOUT_NAMES[position]); | |
108 | + intent.putExtra(LayoutSampleActivity.EXTRA_LAYOUT_ID, LIST_ITEM_LAYOUT_ID[position]); | |
109 | + startActivity(intent); | |
110 | + } | |
111 | +} |
@@ -84,6 +84,7 @@ | ||
84 | 84 | <module>listview-custom-listselector-theme</module> |
85 | 85 | <module>listview-fast-scroll</module> |
86 | 86 | <module>listview-hello</module> |
87 | + <module>listview-layout-sample</module> | |
87 | 88 | |
88 | 89 | <module>markdown-viewer</module> |
89 | 90 |