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.

Adapter & ListView & ExpandalbeListView

23,696 views

Published on

Published in: Technology, News & Politics
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... ,DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL. BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL. BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Adapter & ListView & ExpandalbeListView

  1. 1. Adapter & ListView 2010.10.23
  2. 2. agenda • Adapter - one of the GOF design pattern – • ListView • ExpadableListView
  3. 3. Adapter ● GoF (Gang of Four) によって定義されたデザイン パターンの一つ ● 既存のクラスに修正不要 ● インタフェースを変更可能 ● ListView の adapter は委譲のパターン
  4. 4. ListView ● 1行が1つの View ● チェックボタンやラジオボタンを付けられる
  5. 5. Adapters for List • interface – ListAdapter – SpinnerAdapter – WarrerListAdapter • abstruct class – BaseAdapter – CursorAdapter – ResourceCursorAdapter • class – ArrayAdapter – HeaderViewListAdapter – SimpleAdapter – SimpleCursorAdapter
  6. 6. SimpleAdapter
  7. 7. SimpleAdapter • What is – static data を XML ファイルで 定義された TextView や ImageView に紐づけるための簡 単な adapter • What views can use? – TextView – ImageView – ChackedTextView • Way to bind 1. SimpleAdapter.ViewBinder が セットされていたら、このクラ スの setViewValue メソッドが 呼ばれる 2. 1. が false の場合、setTextView が呼ばれる 3. 2. が false の場 合、setImageView が呼ばれる * setViewBinder() で独自の SimpleAdapter.ViewBinder を セットすれば、TextView, ImageView 以外の View を使え る
  8. 8. SimpleAdapter • Constructors – parameters • context : SimpleAdapter が紐付く View が動作する Context this, getApplicationContext() など • data : Map の List. List の 1 エントリ が ListView の 1行に相当する Map は from で指定した各文字列がキーになった data を持ってなければならない • resource : ListView の 1行のレイアウト XML ファイルの Resource ID このレイアウトには、 to で指定した各 Id の View が 含まれていなければならない • from : 各 View に紐づける Map data のキー • to : from パラメータの各 data を紐づける View の Id SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
  9. 9. SimpleAdapter • Constructors SimpleAdapter( this, data, R.layout.list_item, from, to) res/layout/list_item.xml <LinearLayout android:orientation=“horizontal” > <TextView android:id=“@+id/textview1” /> <TextView android:id=“@+id/textview2” /> </LinearLayout> int[] to = {R.id.textview1, R.id.textview2}; textview2 textview1
  10. 10. SimpleAdapter • Constructors SimpleAdapter( this, data, R.layout.list_item, from, to) static final List<HashMap<String, String> data = Arrays.asList( new HashMap<String, String>() { put(“Title”, “ 吾輩は猫である”); put(“Author”, “夏目漱石”); }, … new HashMap<String, String>() { put(“Title”, “ 走れメロス”); put(“Author”, “太宰治”); } ); String[] from = {“Title”, “Author”}; textview2 textview1
  11. 11. SimpleAdapter • Constructors SimpleAdapter( this, data, R.layout.list_item, from, to) textview2 textview1
  12. 12. SimpleAdapter • Constructors SimpleAdapter( this, data, R.layout.list_item, from, to) res/layout/list_item.xml <LinearLayout android:orientation=“horizontal” > <ImageView android:id=“@+id/imageview1” /> <ImageView android:id=“@+id/imageview2” /> </LinearLayout> int[] to = {R.id.imageview1, R.id.imageview2}; imageview2 imageview1
  13. 13. SimpleAdapter • Constructors static final List<HashMap<String, Integer> data = Arrays.asList( new HashMap<String, Integer>() { put(“Icon1”, R.drawable.alermclock); put(“Icon2”, R.id.bookopen); }, … new HashMap<String, Integer>() { put(“Icon1”, R.id.calculator); put(“Icon2”, R.id.camera); } ); String[] from = {“Icon1”, “Icon2”}; imageview2 imageview1 SimpleAdapter( this, data, R.layout.list_item, from, to)
  14. 14. SimpleAdapter • Constructors imageview2 imageview1 SimpleAdapter( this, data, R.layout.list_item, from, to)
  15. 15. SimpleAdapter ● Notes ● 異なるデータ型を一緒に含むことができない ● 文字列(String)と resource ID(Integer)を一緒にできない ● データ型を Object にすればできます!! imageview textview static final List<HashMap<String, Object> data = Arrays.asList( new HashMap<String, String>() { put(“Icon”, R.id.soseki); put(“Author”, “夏目漱石”); }, … new HashMap<String, String>() { put(“Icon”, R.id.dazai); put(“Author”, “太宰治”); } );
  16. 16. SimpleCursorAdapter
  17. 17. SimpleCursorAdapter • What is – Cursor から取得したカラムを XML ファイルで定義された TextView や ImageView に紐づけ るための簡単な adapter • What views can use? – TextView – ImageView – ChackedTextView • Way to bind 1. SimpleAdapter.ViewBinder が セットされていたら、このクラ スの setViewValue メソッドが 呼ばれる 2. 1. が false の場合、setTextView が呼ばれる 3. 2. が false の場 合、setImageView が呼ばれる * setViewBinder() で独自の SimpleAdapter.ViewBinder を セットすれば、TextView, ImageView 以外の View を使 える
  18. 18. SimpleCursorAdapter • Constructors – parameters • context : SimpleAdapter が紐付く View が動作する Context this, getApplicationContext() など • c : データベースの cursor cursor がまだ使えないときは null でも OK • resource : ListView の 1行のレイアウト XML ファイルの Resource ID このレイアウトには、 to で指定した各 Id の View が 含まれていなければならない • from : 各 View に紐づける cursor data の column name cursor がまだ使えないときは null でも OK • to : from パラメータの各 data を紐づける View の Id SimpleAdapter( Context context, int resource, Cursor c, String[] from, int[] to)
  19. 19. SimpleCursorAdapter ● Notes ● List<? extends Map<String, ?>> data が Cursor c になった だけで、 SimpleAdapter と同じ ● もちろん、異なるデータ型を含むことができる imageview textview できる! ^ ^
  20. 20. ArrayAdapter
  21. 21. ArrayAdapter • What is – 任意の Object の配列を ListView に紐づけるための adapter • What views can use? – TextView (デフォルト) – 任意の View • Way to bind 1. デフォルトは 1行 = TextView 2. id を指定すれば、レイアウト 内の任意の TextView に紐づけ 可能 3. 任意の Object の配列を紐づけ る場合、toString() を override すれば、その戻り値が TextView に入る 4. ImageView など toString() を 戻り値がふさわしくない場合 、getView(int, View, ViewGroup) を override する
  22. 22. ArrayAdapter • Constructors – parameters • context : ArrayAdapter が紐付く View が動作する Context this, getApplicationContext() など • resource: TextView が1つだけ含まれるレイアウトファイルの resource Id レイアウトファイルの root view が TextView でなければならない ArrayAdapter(Context context, int resource)
  23. 23. ArrayAdapter • Constructors ArrayAdapter(this, R.layout.list_item) Note List の 1行は TextView になる 紐づけるデータは add(T object) で追加する textview
  24. 24. ArrayAdapter • Constructors – parameters • context : ArrayAdapter が紐付く View が動作する Context this, getApplicationContext() など • resource : ListView の 1行のレイアウト XML ファイルの Resource ID このレイアウトには、 textViewResourceId で指定した Id の TextView が 含まれていなければならない • textViewResourceId : TextView の resource Id ArrayAdapter(Context context, int resource, int textViewResourceId)
  25. 25. ArrayAdapter • Constructors ArrayAdapter(this, R.layout.list_item, R.id.textview) Note List の 1行のどこかに adapter と紐付く TextView が含まれる 紐づけるデータは add(T object) で追加する textview
  26. 26. ArrayAdapter • Constructors – parameters • context : ArrayAdapter が紐付く View が動作する Context this, getApplicationContext() など • resource : TextView が1つだけ含まれるレイアウトファイルの resource Id レイアウトファイルの root view が TextView でなければならない • Object : 各 View に紐づける T クラス (String, 独自クラスなど) の配列 toString() の戻り値が TextView に入れられる ArrayAdapter(Context context, int resource, T[] Object)
  27. 27. ArrayAdapter • Constructors ArrayAdapter(this, R.layout.list_item, data) String[] data = {“夏目漱石”, “太宰治”, … }; Note List の 1行は TextView になる TextView に表示される文字は toString() の戻り値 textview
  28. 28. ArrayAdapter • Constructors – parameters • context : ArrayAdapter が紐付く View が動作する Context this, getApplicationContext() など • resource : ListView の 1行のレイアウト XML ファイルの Resource ID このレイアウトには、 textViewResourceId で指定した Id の TextView が 含まれていなければならない • textViewResrouceId : TextView の resource Id • Object : 各 View に紐づける T クラス (String, 独自クラスなど) の配列 toString() の戻り値が TextView に入れられる ArrayAdapter(Context context, int resrouce, int textViewResourceId, T[] Object)
  29. 29. ArrayAdapter • Constructors ArrayAdapter(this, R.layout.list_item, R.id.textview, data) String[] data = {“夏目漱石”, “太宰治”, … }; Note List の 1行のどこかに adapter と紐付く TextView が含まれる TextView に表示される文字は toString() の戻り値 textview
  30. 30. ArrayAdapter • Constructors – parameters • context : ArrayAdapter が紐付く View が動作する Context this, getApplicationContext() など • resource : TextView が1つだけ含まれるレイアウトファイルの resource Id レイアウトファイルの root view が TextView でなければならない • Object : 各 View に紐づける T クラス (String, 独自クラスなど) の List toString() の戻り値が TextView に入れられる ArrayAdapter(Context context, int resource, List<T> Object)
  31. 31. ArrayAdapter • Constructors ArrayAdapter(this, R.layout.list_item, data) List<String> data = new ArrayList<String>(); data.add (“夏目漱石”); data.add(“太宰治”); Note List の 1行は TextView になる TextView に表示される文字は toString() の戻り値 textview
  32. 32. ArrayAdapter • Constructors – parameters • context : ArrayAdapter が紐付く View が動作する Context this, getApplicationContext() など • resource : ListView の 1行のレイアウト XML ファイルの Resource ID このレイアウトには、 textViewResourceId で指定した Id の TextView が 含まれていなければならない • textViewResrouceId : TextView の resource Id • Object : 各 View に紐づける T クラス (String, 独自クラスなど) の List toString() の戻り値が TextView に入れられる ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> Object)
  33. 33. ArrayAdapter • Constructors ArrayAdapter(this, R.layout.list_item, R.id.textview, data) List<String> data = new ArrayList<String>(); data.add (“夏目漱石”); data.add(“太宰治”); Note List の 1行のどこかに adapter と紐付く TextView が含まれる TextView に表示される文字は toString() の 戻り値 textview
  34. 34. ArrayAdapter • Get static adapter – parameters • context : ArrayAdapter が紐付く View が動作する Context this, getApplicationContext() など • textArrayResourceId : 文字列の配列が定義されている resource Id res/values/arrays.xml など • resource : TextView が1つだけ含まれるレイアウトファイルの resource Id レイアウトファイルの root view が TextView でなければならない – Returns • static ArrayAdapter<CharSequence> ArrayAdapter.createFromResource(Context context, int textArrayResrouceId, int resource)
  35. 35. ArrayAdapter • Get static adapter ArrayAdapter(this, R.array.authors, R.layout.list_item, data) res/values/arrays.xml <string-array name=“authors”> <item>夏目漱石</item> <item>太宰治</item> </string-array> Note List の 1行は TextView になる TextView に表示される文字は resource の string- array で定義した各文字列 textview
  36. 36. extends ArrayAdapter
  37. 37. extends ArrayAdapter • Point – getView() を Override する – ViewHolder を使う • Example – ImageView and TextView – ListView に紐づけるデータ用のクラスを定義 – ViewHolder 用のクラスを定義 class bindData { String text; int imageResourceId; } static class ViewHolder { TextView textView; ImageView imageView; }
  38. 38. extends ArrayAdapter public class MyAdapter extends ArrayAdapter<bindData> { private LayoutInflater inflater; public MyAdapter(Context context, List<ImageAndString> objects) { super(context, 0, objects); this.inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } • Point – View を生成するための LayoutInflater を取得する – 親クラス (ArrayAdapter) のコンストラクタの textViewResoruceId には 0 を渡す • Example – ImageView and TextView – getSystemService(Context.LAYOUT_INFLATER_SERVICE) を使う
  39. 39. extends ArrayAdapter @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = inflater.inflate(R.layout.list_item, parent, false); holder = new ViewHolder(); holder.textView = (TextView) convertView.findViewById(R.id.textview); holder.imageView = (ImageView) convertView.findViewById(R.id.imageview); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } bindData data= getItem(position); holder.textView.setText(data.text); holder.imageView.setImageResource(data.imageResourceId); return convertView; } }
  40. 40. extends ArrayAdapter ● Point ● 複雑なレイアウトでもOK ● いろんな View に別々の型のデータを紐づけられる ● データ用のクラスの List (or 配列)の要素数と ListView の 行数は同じ imageview textview
  41. 41. extends BaseAdapter
  42. 42. extends BaseAdapter ● Point ● 複雑なレイアウトでもOK ● データのリストを管理を自分でできる
  43. 43. ExpandableListView
  44. 44. Adaptears for ExpandableList • public interface – ExpandableListAdapter – HeterogeneousExpandableList • public abstruct class – BaseExpandableListAdapter – CursorTreeAdapter – ResourceCursorTreeAdapter • public class – SimpleExpandableListAdapter
  45. 45. SimpleExpandableListAdapter
  46. 46. SimpleExpandableListAdapter • Constructors – parameters • groupData, groupLayout, groupFrom, groupTo : group (= とじたとき) に関する引数 SimpleAdapter と同じ • childData, childLayout, childFrom, childTo : Child (= 開いたとき) に関する引数 SimpleAdapter と同じ SimpleExpandableListAdapter(Context context, List<? extendsMap<String, ?>> groupData, int groupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> childData, int childLayout, String[] childFrom, int[] childTo)
  47. 47. SimpleExpandableListAdapter • Constructors SimpleExpandableListAdapter(this, groupData, R.layout.list_item1, groupFrom, groupTo, childData, R.layout.list_item2, childFrom, childTo) res/layout/list_item1.xml <LinearLayout android:orientation=“horizontal” > <ImageView /> <TextView android:id=“@+id/textview” /> </LinearLayout> int[] groupTo = {R.id.textview}; textview
  48. 48. SimpleExpandableListAdapter • Constructors static final List<HashMap<String, String> groupData = Arrays.asList( new HashMap<String, String>() { put(“Author”, “夏目漱石”); }, … new HashMap<String, String>() { put(“Author”, “太宰治”); } ); String[] groupFrom = {“Author”}; SimpleExpandableListAdapter(this, groupData, R.layout.list_item1, groupFrom, groupTo, childData, R.layout.list_item2, childFrom, childTo) textview
  49. 49. SimpleExpandableListAdapter • Constructors res/layout/list_item2.xml <LinearLayout android:orientation=“horizontal” > <TextView android:id=“@+id/textview1” /> <TextView android:id=“@+id/textview2” /> </LinearLayout> int[] childTo = {R.id.textview1, R.id.textview2}; textview2 textview1 SimpleExpandableListAdapter(this, groupData, R.layout.list_item1, groupFrom, groupTo, childData, R.layout.list_item2, childFrom, childTo)
  50. 50. SimpleExpandableListAdapter • Constructors List<List<HashMap<String, String> childData = new ArrayList<List<HashMap<String, String>(); static final List<HashMap<String, String> firstChildData = Arrays.asList( new HashMap<String, String>() { put(“Title”, “吾輩は猫である”); put(“Date”, “1905年”); }, … new HashMap<String, String>() { put(“Title”, “坊ちゃん”); put(“Date”, “1906年”); } ); childData.add(firstChildData); String[] childFrom = {“Title”, “Date”}; textview2textview2 textview1 SimpleExpandableListAdapter(this, groupData, R.layout.list_item1, groupFrom, groupTo, childData, R.layout.list_item2, childFrom, childTo)
  51. 51. SimpleExpandableListAdapter • Constructors SimpleExpandableListAdapter(this, groupData, R.layout.list_item1, groupFrom, groupTo, childData, R.layout.list_item2, childFrom, childTo) textview2 textview1
  52. 52. SimpleExpandableListAdapter ● Notes ● 異なるデータ型を一緒に含むことができない ● 文字列(String)と resource ID(Integer)を一緒にできない ● データ型を Object にすればできます!! imageview textview List<List<HashMap<String, Object> childData = new ArrayList<List<HashMap<String, Object>(); static final List<HashMap<String, Object> firstChildData = Arrays.asList( new HashMap<String, String>() { put(“Icon”, R.id.waganeko); put(“Title”, “吾輩は猫である”); }, … new HashMap<String, String>() { put(“Icon”, R.id.bochyan); put(“Title”, “坊ちゃん”); } ); childData.add(firstChildData);
  53. 53. extends BaseExpandableListAdapter
  54. 54. extends BaseExpandableListAdapter ● Point ● 複雑なレイアウトでもOK ● データのリストを管理を自分でできる

×