SlideShare a Scribd company logo
1 of 37
Download to read offline
イベント
【宜野湾】第2回 Android勉強会 全6回
■カスタム ListView
 - カスタムListViewとは
 - Adapterとは
 - 実際に独⾃のレイアウトを構築してみる
■画⾯遷移について
 - Activity
 - Fragment
カスタムListView 事前準備 1
追加する内容
<uses-permission android:name="android.permission.INTERNET" />
■Android Manifest.xml
カスタムListView 事前準備 2
追加する内容
depencencies{}の中に下記を追記
compile 'com.squareup.picasso:picasso:2.5.2'
編集するとでてくる「Sync Now」を押下する
■module(app):build.gradle
カスタムListView事前準備 3
■activity_main.xml
カスタムListView 事前準備 4
■row.xml(新規レイアウトファイル作成)
Layoutディレクトリ右クリック => New
=> layout resource file => File name:
「row」を⼊⼒ => OKを押下
カスタムListView 事前準備 5
■MyModel.java(新規Java作成)
MainActivityのディレクトリ右クリック =>
New => Java Class => Name:「MyModel」を⼊⼒
=> OKを押下
※別紙参照
MyModel.java
カスタムListView 事前準備説明
・AndroidManifest.xmlのパーミッション設定
 - インターネット通信やストレージアクセス等
・build.gradleの設定
 - Libraryインストールする際にcomple ‘hoge’と⼊⼒しインストールする
・activity_main.xml
 - ListViewの設定
・row.xml
 - ListViewの1⾏に表⽰するレイアウトファイル
・MyModel.java
 - ListViewの1⾏に表⽰する情報を格納するオブジェクト
カスタムListView
■レイアウトをカスタマイズ
■合わせて独⾃Adapterを構築
■カスタムListViewとは
カスタムListView
■ListViewとロジックを組み
合わせる
■独⾃レイアウトを定義する
のに必要不可⽋
■Adapterとは
カスタムListView
■注意点
リスト1
リスト2
リスト3
リスト4
リスト1
リスト2
リスト3
リスト4
?
リスト2
リスト3
リスト4
リスト1 => 5
画⾯表⽰領域
カスタムListView
ポイント
■ListViewとAdapterの組み合わせ
■ロジックとViewの結合
おまけ
■Web画像読み込み
■完成イメージ
カスタムListView
■Adapterの作成
Adapter作成し記述していきましょう!
別紙参照です!
MainActivityのディレクトリ右クリック =>New => Java Class =>
Name:「MyAdapter」を⼊⼒ => OKを押下
カスタムListView
■MainActivityの処理
MainActivity記述していきましょう!
別紙参照です!
カスタムListView:MyAdapter
ポイント
配列でリスト表⽰する為のデータ
を受け渡している
■コンストラクタ
カスタムListView:MyAdapter
ポイント
リストの数を配列の数から設定し
ている
mModelsの取扱には注意
■getCount()
カスタムListView:MyAdapter
ポイント
戻り値の指定
Int positionを元にデータを取得し
返却
■getItem()
カスタムListView:MyAdapter
ポイント
リスト⼀つひとつの要素作成の度に
getViewが呼ばれる
ここの処理が遅いと、表⽰がもっさり
してしまう
View.inflateでxmlファイルを読み込
む
return view;を指定し、1⾏のViewを
返却
■getView() 1
カスタムListView:MyAdapter
ポイント
if(view == null){}
初期状態は使い回しのViewがいない
ためnull
使い回しのViewの場合
else{}
が呼ばれる
■getView() 2
カスタムListView:ViewHolder
■ViewHolderパターンとは
・ListView⾼速化⼿法の⼀つ
・findViewByIDのコスト削減
・Googleに公式な⼿法として記載さ
れている
https://developer.android.com/training/improving-layouts/
smooth-scrolling.html#AsyncTask
・対応は必須では無い
カスタムListView:MyAdapter
ポイント
Web画像をURLから取得する
⾃動で画像をキャッシュしてくれる
画像読み込みのCallbackを意識する必
要が無い
■画像読み込み(Picassoのおまけ)
カスタムListView:MyAdapter
・Web画像をURLから取得する処理を記述
・バックグランドスレッドで実⾏後Callbackを受け取って設定
・キャッシュ処理の組み込み(Memory Cache/DiskCache等)
・Callback前に表⽰されているリストに設定するものかの判定を追
記
・その他バグでたら都度対応。。。
参考サイト
http://android.swift-studying.com/entry/
20151024/1445666337
■画像読み込み(Picasso無しの場合)
カスタムListView:MainActivity
ポイント
MyModeleオブジェクトのインス
タンスを作成
Viewとは関係なく、データを作成
■データの作成
カスタムListView:MainActivity
ポイント
Adapterに配列を設定
ListViewにAdapterを設定し、
Viewとロジックのつなぎ込みを⾏
う
■データの設定
カスタムListView:MainActivity
ポイント
mModels配列に新たにデータを追
加
Adapter.notifyDataSetChanged();
でリストのViewを更新
データ更新 => Viewの更新の流れ
が重要
■データ+Viewの更新
画⾯遷移について:Activityの作成
Activityの名称:SecondActivityに設定してください
画⾯遷移について:Activityの作成
■通常のJavaファイル作成との違い
ポイント
AndroidManifest.xmlに⾃動登録
レイアウトファイル⾃動作成
⾊々なActivityのフォーマットがある
画⾯遷移について
■activity_second.xmlを修正
1. ConstraintLayoutから
LinearLayoutに変更
2. TextViewを作成
3. Buttonを作成
画⾯遷移について
■SecondActivity.javaを修正
1.  Intetデータ取得処理を記述
2.  TextViewに値を設定
3.  ボタンクリックイベント
4.  setResult()とfinish()を設定
※別紙参照
画⾯遷移について
■MainActivity.javaを修正
onCreate()メソッド内
MainActivityクラス Overrideメソッド
画⾯遷移について:Activityの作成
■Intentについて
1. Activity間でデータを受け渡す
2. String/int等プリミティブ型は対応可能
3. オブジェクトに関しては、Serializeまた
はParcelableに変換し対応
4. KEY VALUE形式
画⾯遷移について:Activityの作成
■startActivityについて
1. ActivityからActivityへの移動メソッド
2. startActivity:単純起動
3. startActivityForResult:
 起動したActivityの終了通知受取⽤
4. RequestCode終了通知に⼀緒に受け取る
画⾯遷移について:Activityの作成
■onActivityResultについて
1.  requestCode:startActivityForResult()に設定した値
2.  resultCode:遷移先のActivityで設定したsetResult()の値
3.  Data: setResult()に設定されたIntent
4.  遷移先のActivityが終了した時に呼ばれるcallback
画⾯遷移について:Fragment
■Fragmentについて
1.  Activityより⼩規模
2.  UIとロジックの使い回しができる
3.  Inputは得意だがOutputに癖がある
4.  FragmentManagerで管理する
5.  画⾯を作る際はFragmentにViewを載せ
るが主流
Activity
Fragment
View
画⾯遷移について:Fragment
■FragmentManagerについて
1.  画⾯遷移にはスタックの概念が基本
(Add/Pop)
2.  Replace/Removeなどもある
3.  ContainerにFargmentを⼊れるイメージ
4.  複数Fragmentを追加する事も可能
5.  Fragmentを管理する
Activity
Fragment
View
Container
(FrameLayout等)
画⾯遷移について:Fragment
Activity
Fragment A
View
Container
(FrameLayout等)
Activity
Fragment B
View
Container
(FrameLayout等)
■画⾯遷移
画⾯遷移について:Fragment
Activity
Fragment A
ListView
Container
(FrameLayout等)
■分割パターン(Tablet画⾯等)
Fragment B
Container
(FrameLayout等)
まとめ
■リストビューのカスタマイズ⽅法がわかった
■PicassoといLibraryが便利なことがわかっ
た
■Activityの画⾯遷移、データ受け渡し、終了
通知がわかった
■Fragmentの使い⽅が少しわかった

More Related Content

Similar to Andorid アプリ 開発 勉強会 第3回

PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929hiro345
 
Android sdk manual_1.02
Android sdk manual_1.02Android sdk manual_1.02
Android sdk manual_1.02Tomohiro Kondo
 
Android sdk manual_1.02
Android sdk manual_1.02Android sdk manual_1.02
Android sdk manual_1.02Tomohiro Kondo
 
Android Architecture Componentsの新機能
Android Architecture Componentsの新機能Android Architecture Componentsの新機能
Android Architecture Componentsの新機能Damper Matsu
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)Masafumi Terazono
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドKazumi Hirose
 

Similar to Andorid アプリ 開発 勉強会 第3回 (9)

PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
Titanium
TitaniumTitanium
Titanium
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
UnicastWS vol.2
UnicastWS vol.2UnicastWS vol.2
UnicastWS vol.2
 
Android sdk manual_1.02
Android sdk manual_1.02Android sdk manual_1.02
Android sdk manual_1.02
 
Android sdk manual_1.02
Android sdk manual_1.02Android sdk manual_1.02
Android sdk manual_1.02
 
Android Architecture Componentsの新機能
Android Architecture Componentsの新機能Android Architecture Componentsの新機能
Android Architecture Componentsの新機能
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
 

Andorid アプリ 開発 勉強会 第3回