亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

ArrayAdapter和SimpleCursorAdapter

系統(tǒng) 2232 0

    使用ArrayAdapter定制 To-Do List

    ?

    這個(gè)例子將擴(kuò)展 To-Do List 工程,以一個(gè) ToDoItem 對(duì)象來(lái)儲(chǔ)存每一個(gè)項(xiàng)目,包含每個(gè)項(xiàng)目的創(chuàng)建日期。

    ?

    你將擴(kuò)展 ArrayAdapter 類來(lái)綁定一組 ToDoItem 對(duì)象到 ListView 上,并定制用于顯示每一個(gè) ListView 項(xiàng)目的 layout

    ?

    1. 返回到 To-Do List 工程。創(chuàng)建一個(gè)新的 ToDoItem 類來(lái)保存任務(wù)和任務(wù)的創(chuàng)建日期。重寫 toString 方法來(lái)返回一個(gè)項(xiàng)目數(shù)據(jù)的概要。

    ?

Java代碼?
  1. package ?com.paad.todolist;??
  2. import ?java.text.SimpleDateFormat;??
  3. import ?java.util.Date;??
  4. ???
  5. public ? class ?ToDoItem?{??
  6. String?task;??
  7. Date?created;??
  8. ???
  9. public ?String?getTask()?{??
  10. return ?task;??
  11. }??
  12. ???
  13. public ?Date?getCreated()?{??
  14. return ?created;??
  15. }??
  16. ???
  17. public ?ToDoItem(String?_task)?{??
  18. this (_task,? new ?Date(java.lang.System.currentTimeMillis()));??
  19. }??
  20. ???
  21. public ?ToDoItem(String?_task,?Date?_created)?{??
  22. task?=?_task;??
  23. created?=?_created;??
  24. }??
  25. ???
  26. @Override ??
  27. public ?String?toString()?{??
  28. SimpleDateFormat?sdf?=? new ?SimpleDateFormat(“dd/MM/yy”);??
  29. String?dateString?=?sdf.format(created);??
  30. return ?“(“?+?dateString?+?“)?“?+?task;??
  31. }??
  32. }??
?

?

2. 打開 ToDoList Activity ,修改 ArrayList ArrayAdapter 變量的類型,儲(chǔ)存 ToDoItem 對(duì)象而不是字符串。然后,你將修改 onCreate 方法來(lái)更新相應(yīng)的變量初始化。你還需要更新 onKeyListener 處理函數(shù)來(lái)支持 ToDoItem 對(duì)象。

?

Java代碼?
  1. private ?ArrayList<ToDoItem>?todoItems;??
  2. private ?ListView?myListView;??
  3. private ?EditText?myEditText;??
  4. private ?ArrayAdapter<ToDoItem>?aa;??
  5. ???
  6. @Override ??
  7. public ? void ?onCreate(Bundle?icicle)?{??
  8. super .onCreate(icicle);??
  9. ???
  10. //?Inflate?your?view ??
  11. setContentView(R.layout.main);??
  12. ???
  13. //?Get?references?to?UI?widgets ??
  14. myListView?=?(ListView)findViewById(R.id.myListView);??
  15. myEditText?=?(EditText)findViewById(R.id.myEditText);??
  16. todoItems?=? new ?ArrayList<ToDoItem>();??
  17. int ?resID?=?R.layout.todolist_item;??
  18. aa?=? new ?ArrayAdapter<ToDoItem>( this ,?resID,?todoItems);??
  19. myListView.setAdapter(aa);??
  20. myEditText.setOnKeyListener( new ?OnKeyListener()?{??
  21. public ? boolean ?onKey(View?v,? int ?keyCode,?KeyEvent?event)??
  22. {??
  23. if ?(event.getAction()?==?KeyEvent.ACTION_DOWN)??
  24. if ?(keyCode?==?KeyEvent.KEYCODE_DPAD_CENTER)??
  25. {??
  26. ToDoItem?newItem;??
  27. newItem?=? new ?ToDoItem(myEditText.getText().toString());??
  28. todoItems.add( 0 ,?newItem);??
  29. myEditText.setText(“”);??
  30. aa.notifyDataSetChanged();??
  31. cancelAdd();??
  32. return ? true ;??
  33. }??
  34. return ? false ;??
  35. }??
  36. });??
  37. registerForContextMenu(myListView);??
  38. }??
?

?

3. 如果你運(yùn)行 Activity ,它將顯示每個(gè) to-do 項(xiàng)目,如圖 5-3 所示。

?

ArrayAdapter和SimpleCursorAdapter

5-3

?

4. 現(xiàn)在,你可以創(chuàng)建一個(gè)自定義的 layout 來(lái)顯示每一個(gè) to-do 項(xiàng)目。修改在第 4 章中創(chuàng)建的自定義 layout ,包含另外一個(gè) TextView ,它將用于顯示每個(gè) to-do 項(xiàng)目的創(chuàng)建日期。

?

Xml代碼?
  1. <? xml ? version =”1.0”? encoding =”utf-8” ?> ??
  2. < RelativeLayout ? xmlns:android =”http://schemas.android.com/apk/res/android”??
  3. android:layout_width =”fill_parent”??
  4. android:layout_height =”fill_parent”??
  5. android:background =”@color/notepad_paper” > ??
  6. < TextView ??
  7. android:id =”@+id/rowDate”??
  8. android:layout_width =”wrap_content”??
  9. android:layout_height =”fill_parent”??
  10. android:padding =”10dp”??
  11. android:scrollbars =”vertical”??
  12. android:fadingEdge =”vertical”??
  13. android:textColor =”@color/notepad_text”??
  14. android:layout_alignParentRight =”true”??
  15. /> ??
  16. < TextView ??
  17. android:id =”@+id/row”??
  18. android:layout_width =”fill_parent”??
  19. android:layout_height =”fill_parent”??
  20. android:padding =”10dp”??
  21. android:scrollbars =”vertical”??
  22. android:fadingEdge =”vertical”??
  23. android:textColor =”@color/notepad_text”??
  24. android:layout_alignParentLeft =”@+id/rowDate”??
  25. /> ??
  26. </ RelativeLayout > ??
?

?

5. 創(chuàng)建一個(gè)新的類( ToDoItemAdapter ),使用指定的 ToDoItem 變量來(lái)擴(kuò)展一個(gè) ArrayAdapter 。重寫 getView 方法來(lái)將 ToDoItem 對(duì)象中的 task date 屬性指定給第 4 步創(chuàng)建的 layout 中的 View 。

Java代碼?
  1. ???
  2. import ?java.text.SimpleDateFormat;??
  3. import ?android.content.Context;??
  4. import ?java.util.*;??
  5. import ?android.view.*;??
  6. import ?android.widget.*;??
  7. ???
  8. public ? class ?ToDoItemAdapter? extends ?ArrayAdapter<ToDoItem>?{??
  9. int ?resource;??
  10. ???
  11. public ?ToDoItemAdapter(Context?_context, int ?_resource,?List<ToDoItem>?_items)?{??
  12. super (_context,?_resource,?_items);??
  13. resource?=?_resource;??
  14. }??
  15. ???
  16. @Override ??
  17. public ?View?getView( int ?position,?View?convertView,?ViewGroup?parent)??
  18. {??
  19. LinearLayout?todoView;??
  20. ToDoItem?item?=?getItem(position);??
  21. String?taskString?=?item.getTask();??
  22. Date?createdDate?=?item.getCreated();??
  23. SimpleDateFormat?sdf?=? new ?SimpleDateFormat(“dd/MM/yy”);??
  24. String?dateString?=?sdf.format(createdDate);??
  25. if ?(convertView?==? null )??
  26. {??
  27. todoView?=? new ?LinearLayout(getContext());??
  28. String?inflater?=?Context.LAYOUT_INFLATER_SERVICE;??
  29. LayoutInflater?vi;??
  30. vi?=?(LayoutInflater)getContext().getSystemService(inflater);??
  31. vi.inflate(resource,?todoView,? true );??
  32. }??
  33. else ??
  34. {??
  35. todoView?=?(LinearLayout)?convertView;??
  36. }??
  37. TextView?dateView?=?(TextView)todoView.findViewById(R.id.rowDate);??
  38. TextView?taskView?=?(TextView)todoView.findViewById(R.id.row);??
  39. dateView.setText(dateString);??
  40. taskView.setText(taskString);??
  41. return ?todoView;??
  42. }??
  43. }??
?

?

6. 最后,用 ToDoItemAdapter 替換 ArrayAdapter 的定義。

?

private ToDoItemAdapter aa;

?

onCreate 中,使用 new ToDoItemAdapter 來(lái)替換 ArrayAdapter<String> 的實(shí)例化。

?

aa = new ToDoItemAdapter(this, resID, todoItems);

?

7. 如果你運(yùn)行 Activity ,它看起來(lái)如圖 5-4 的截圖。

?

ArrayAdapter和SimpleCursorAdapter

5-4

?

使用SimpleCursorAdapter

?

SimpleCursorAdapter 允許你綁定一個(gè)游標(biāo)的列到 ListView 上,并使用自定義的 layout 顯示每個(gè)項(xiàng)目。

?

SimpleCursorAdapter 的創(chuàng)建,需要傳入當(dāng)前的上下文、一個(gè) layout 資源,一個(gè)游標(biāo)和兩個(gè)數(shù)組:一個(gè)包含使用的列的名字,另一個(gè)(相同大?。?shù)組包含 View 中的資源 ID ,用于顯示相應(yīng)列的數(shù)據(jù)值。

?

下面的框架代碼顯示了如何構(gòu)造一個(gè) SimpleCursorAdapter 來(lái)顯示聯(lián)系人信息:

?

Java代碼?
  1. String?uriString?=?“content: //contacts/people/”; ??
  2. Cursor?myCursor?=?managedQuery(Uri.parse(uriString),? null ,? null ,? null ,? null );??
  3. String[]?fromColumns?=? new ?String[]?{People.NUMBER,?People.NAME};??
  4. int []?toLayoutIDs?=? new ? int []?{?R.id.nameTextView,?R.id.numberTextView};??
  5. SimpleCursorAdapter?myAdapter;??
  6. myAdapter?=? new ?SimpleCursorAdapter(
分享到:
評(píng)論
jandroid
  • 瀏覽: 647346 次
  • 性別: Icon_minigender_1
  • 來(lái)自: 北京
社區(qū)版塊
最新評(píng)論

ArrayAdapter和SimpleCursorAdapter


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 天天草天天爽 | 国产精品亚欧美一区二区三区 | 四虎影视www四虎免费 | 国产精品66 | 天天做天天爱天天爽 | 成人国产精品久久久免费 | 欧美综合网站 | 精品国产麻豆 | 全部无卡免费的毛片在线看 | 亚洲国产欧美国产综合一区 | 一区二区三区日韩精品 | 狠狠色噜噜狠狠狠狠2018 | 欧美啪| 亚洲精品日本一区二区在线 | 女人十八毛片一级毛片免费看 | 成人精品一区二区三区中文字幕 | 国产精品久久久久久爽爽爽 | 精品国产你懂的在线观看 | 国产1区| 久久羞羞| 四虎网站在线播放 | 麻豆精品国产免费观看 | 日本一级淫片a的一级欧美 日本一级淫片a免费播放 | 亚洲一区欧美二区 | 98色花堂永久地址国产精品 | 日本亚洲高清 | 国产精品99久久久久久www | 久久99影院网久久久久久 | 亚洲毛片大全 | 性生生活三级视频观看 | 国产美女一级高清免费观看 | 亚洲精品久久午夜香蕉 | 亚洲性大片 | 国产99久久| 久久婷婷激情综合中文字幕 | 全部免费毛片免费播放 | 中文字幕一区二区三区四区五区人 | 青草香蕉精品视频在线观看 | 色噜噜狠狠狠狠色综合久一 | 中文字幕日韩一区 | 中文字幕一区二区三区免费视频 |