Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android study part3

1,511 views

Published on

Trunkの講義の資料(3/5)です。
https://github.com/sakebook/TrunkStudy

内容
・リスト表示
・カスタムリスト表示
・ライブラリを用いた画像取得(Piccaso)

Published in: Devices & Hardware
  • Be the first to comment

  • Be the first to like this

Android study part3

  1. 1. 実践 ANDROIDアプリ開発 @JX通信社 酒本伸也 2015/8/21
  2. 2. LIST
  3. 3. LISTVIEW • ほとんどのアプリで使われるWidget • 同じセルを繰り返すデザイン
  4. 4. • ListView • スクロールは
 デフォルトである • cell • 繰り返す要素 v
  5. 5. 必要なもの • ListView • レイアウトで定義済み • Adapter • ListViewやGridViewのような子要素が定義された View(AdapterView)とDataをつなぐ役割 • Data • ListViewに表示させたいデータのリスト(前回取得済み)
  6. 6. ListViewを現在のレイアウトから取得
  7. 7.  ダミーのデータを生成 (取得した記事データを用いる)
  8. 8. Adapterを生成してListViewにセット
  9. 9. android.R.layout.simple_list_item_1 デフォルトで用意されているcellのレイアウト v
  10. 10. • Dataが入っている
  11. 11. TextViewしか用意されていない android.R.layout.simple_list_item_1
  12. 12. カスタムLISTVIEW
  13. 13. カスタムLISTVIEW • cellのレイアウトを定義 • Adapterを定義 • Dataを詰める • Dataを描画
  14. 14. CELLレイアウト
  15. 15. ADAPTERを定義 • ArrayAdapterを継承する • 必要なデータはコンストラクタに含める • 適切なメソッドをOverrideする
  16. 16. ARRAYADAPTERを継承 • <>の中はDataの型にする • コンストラクタの引数はメンバに渡す
  17. 17. OVERRIDEが必要なメソッド • getCount() • getItem(int position) • getView(int position,View convertView, ViewGroup parent)
  18. 18. • getCount() • 描画するcellの数を決める。
 Dataの個数を返す。 • getItem(int position) • 現在のcellの位置に応じたDataを返す • getView(int position,View convertView,ViewGroup parent) • 描画するcellを返す
  19. 19. • getCount() • getItem(int position)
  20. 20. • position: リスト内での位置 • convertView: cell • parent: ListView
  21. 21. • convertViewに
 定義したLayoutを読み込ませる • Layout(RelativeとかLinearをか)を定義してある のでnull
  22. 22. • mArticleList.get(position)でDataを取得 • 定義したLayoutへアクセスし、Dataを詰める
  23. 23. • 定義したLayoutの各要素に
 都度アクセスするのは
 パフォーマンスが悪い
  24. 24. VIEWHOLDERパターン • ViewHolder(名前はなんでも良い)クラスを
 内部に作成し、要素へのアクセスを
 高速化する
  25. 25. VIEWHOLDER • 各Widgetへのアクセスを持つのみ • インナークラスとして定義
  26. 26. • setTag/getTag(Object)でViewHolderを保持
  27. 27. • こんな感じ
  28. 28. • 画像はどうした
  29. 29. 非同期 • 画像は端末内にない場合、http通信をして取 得してくる必要がある • 非同期で処理を行わないとListViewが固まる
  30. 30. PICASSO
  31. 31. PICASSO • 画像まわりのライブラリ • 非同期で取得や、キャッシュもしてくれる
  32. 32. BUILD.GRADLE • compile 'com.squareup.picasso:picasso:2.5.2'
  33. 33. 一行 • Picasso.with(mContext).load(Uri.parse(url)).into(mImageView);

  34. 34.  詳細 • http://qiita.com/hotchemi/items/ 33ebd5faa42d2d05c2b6
  35. 35. クリックイベント • ListViewに対して、
 Buttonと同じように実装する
  36. 36. • setOnItemClickListener • setOnClickListenerではない • ListViewに対してのリスナー
  37. 37. • AdapterからDataを取得する
  38. 38. • タイトルが表示される!

×