精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android用戶界面設計之創建列表視圖程序

移動開發 Android
本文介紹ListView,它是工具是在界面上以列表形式組織數據的快速方式。在這個教程中我們只是接觸到ListView控件的最表層。然而,你學到了最基礎的:創建列表項,使用數據適配器,以及處理列表項點擊。

列表視圖(ListView)是Android平臺下用于顯示不定數量的數據最有用的視圖控件之一。在這個教程中,我們將向你展示如何使用ListView來瀏覽文章列表。

在之前的文章中,你看到了許多關于不同布局控件的教程。應用程序本身非常簡單:它將顯示文章標題列表,當點擊標題時,顯示文章內容。這篇文章的節奏將比我們的入門教程更快一些。如果你對基本的Android控件或概念不熟悉你可能需要復習這個網站上我們其它的一些教程,甚至是Android API參考。最終的開源代碼可以在Google code上下載到。

步驟0: 創建項目

在Eclipse中創建一個新的Android項目。我們將項目命名為MT-List,起始活動命名為TutListActivity。這個Activity必須繼承ListActivity類,它是一個特殊的Activity類,用于幫助管理ListView控件。我們使用的是Android2.3.3的API。

步驟1: 設計列表界面

實際上,這一步要做的很少。一個由重復項組成的ListView控件,每一項都有相同的布局(一項一個模板)。我們想要顯示一個文章標題列表。每個標題都是ListView中的一項。因此,每個列表項的模板只需要一個TextView控件。在你的項目中添加一個叫做list_item.xml布局資源文件,它描述了列表中的每一項的模板布局。在這個例子中,它看起來可能像這樣:

  1. <?xml version="1.0" encoding="utf-8"?>   
  2.   <TextView xmlns:android="http://schemas.android.com/apk/res/android"   
  3.   android:layout_width="fill_parent"   
  4.   android:layout_height="wrap_content"   
  5.   android:textSize="24dp"   
  6.   android:padding="6dp"   
  7. /> 

字號加上填充屬性值要確保在平均大小的屏幕下列表每一項對于平均手指的大小來說是足夠大的觸摸目標。

步驟2: 為ListView填充數據

ListView控件設計用于從數據源加載數據。可以使用適配器從數據庫,數組或其它數據源讀取數據。在這個程序中我們使用數組作為數據源。今后,你可以將數組替換為某些實時數據源。在你的項目中創建兩個字符串數組(你可以將他們添加到strings.xml或者一個分離的arrays.xml文件,隨你愿意)。將一個數組取名為“tut_titles”,另一個名為“tut_links”。用網站上的有效的標題和URL填充這兩個數組。下面是我們的數組:

  1. <string-array name="tut_titles"> 
  2.  <item> 
  3. Design &amp; Build a 1980s iOS Phone App: Design Comp Slicing  
  4. </item>   
  5. <item> 
  6. Best of Tuts+ in February 2011  
  7. </item>   
  8. <item>Create a Brick Breaker Game with the Corona SDK: Game Controls  
  9. </item>   
  10. <item>Exporting Graphics for Mobile Apps: PNG or JPEG?  
  11. </item>   
  12. <item> 
  13. Android Tablet Design  
  14. </item>   
  15. <item>Build a Titanium Mobile Pizza Ordering App: Order Form Setup  
  16. </item>   
  17. <item>Create a Brick Breaker Game with the Corona SDK: Application Setup  
  18. <item>   
  19. <item>Android Tablet Virtual Device Configurations  
  20. </item> 
  21.  <item> 
  22. Build a Titanium Mobile Pizza Ordering App: Topping Selection  
  23. </item>   
  24. <item>Design &amp; Build a 1980s iOS Phone App: Interface Builder Setup  
  25. </item>   
  26. </string-array> 
  27.  <string-array name="tut_links">   
  28. <item>http://mobile.tutsplus.com/tutorials/mobile-design-tutorials/80s-phone-app-slicing/  
  29. </item>   
  30. <item>http://mobile.tutsplus.com/articles/news/best-of-tuts-in-february-2011/  
  31. </item>   
  32. <item>http://mobile.tutsplus.com/tutorials/corona/create-a-brick-breaker-game-with-the-corona-sdk-game-controls/  
  33. </item>   
  34. <item>http://mobile.tutsplus.com/tutorials/mobile-design-tutorials/mobile-design_png-or-jpg/  
  35. </item>   
  36. <item>http://mobile.tutsplus.com/tutorials/android/android-tablet-design/  
  37. </item> 
  38.  <item>http://mobile.tutsplus.com/tutorials/appcelerator/build-a-titanium-mobile-pizza-ordering-app-order-form-setup/  
  39. </item>   
  40. <item>http://mobile.tutsplus.com/tutorials/corona/corona-sdk_brick-breaker/  
  41. </item> 
  42.  <item>http://mobile.tutsplus.com/tutorials/android/android-sdk_tablet_virtual-device-configuration/  
  43. </item> 
  44.  <item>http://mobile.tutsplus.com/tutorials/appcelerator/pizza-ordering-app-part-2/  
  45. </item>   
  46. <item>http://mobile.tutsplus.com/tutorials/iphone/1980s-phone-app_interface-builder-setup/  
  47. </item>   
  48. </string-array> 

當然這個數據是靜態的。在一些情況下,使用靜態數據對于一個ListView來說也是有意義的。對于這些情況,使用一個字符串數組資源非常簡單和方便。需要確保標題和鏈接的排序是一致的,這樣兩個數組才能匹配。

#p#

步驟3: 將數組適配到ListView

現在程序已經有數據了,現在來顯示它們。回到TutListActivity.java,修改onCreate()方法,使用setListAdapter()方法來加載數據。和常規的活動不一樣,對于整個活動就僅僅只是一個ListView的情況,ListActivity不需要使用setContentView()。完成后,你的整個ListActivity將看起來像這樣:

  1. public class TutListActivity extends ListActivity {   
  2. @Override  
  3.  public void onCreate(Bundle savedInstanceState) {   
  4. super.onCreate(savedInstanceState);   
  5. setListAdapter(ArrayAdapter.createFromResource(getApplicationContext(), R.array.tut_titles, R.layout.list_item));   
  6. }  

這時候,你已經可以運行這個程序了。你將看到一個具有所有本教程中所有標題的ListView。上劃和下劃都正常。但是,點擊標題還沒有任何反應。

步驟4:處理ListView條目點擊

處理ListView中條目的點擊與其它視圖對象的處理方式相似:使用偵聽器(listener)。在這里,我們關注OnTimeClickListener。你可能注意到我們還沒有直接處理過ListView對象。現在是時候了。在ListActivity中,簡單地調用getListView()方法來遍歷ListView,然后調用setOnItemClickListener()方法并且一次性實現它們:

  1. getListView().setOnItemClickListener(new OnItemClickListener() {  
  2.    @Override   
  3.     public void onItemClick(AdapterView<?> parent, View view,  
  4.      int position, long id) {   
  5.       // TBD  
  6.      }   
  7.    }  
  8. ); 

onItemClick()方法會在用戶每次點擊列表視圖中的每一項時被調用。為了方便,它可以傳入幾個有用的參數,其中一個我們需要它來啟動查看器活動(viewer activity)。等等,什么是查看器活動?

#p#

步驟5:創建查看器活動

非常好的問題。讓我們現在就來創建一個查看器活動!這個活動將用于向用戶顯示教程內容。通過繼承Activity創建一個新的類,并把它命名為TutViewerActivity.java。為它創建一個布局資源文件,文件只包括一項:一個WebView控件。布局文件應該看起來如下:

在TutViewerActivity類的onCreate()方法中,調用setContentView()方法并

  1. <?xml version="1.0" encoding="utf-8"?>   
  2.  <WebView xmlns:android="http://schemas.android.com/apk/res/android" 
  3.    android:layout_width="match_parent"   
  4.    android:layout_height="match_parent"   
  5.    android:id="@+id/tutView">   
  6. </WebView> 

將這個布局傳入。***,不要忘了將這個活動添加到你的AndroidManifest.xml 文件。

步驟6:啟動Details Activity

注意力回到TutListActivity一會。讓我們看看我們需要做什么來啟動這個查看器Activity顯示合適文章鏈接。在onItemClick()方法中,被點擊項的位置被作為一個int型的值傳入。這就是我們需要用來訪問文章鏈接數組的值。

鏈接數組里的字符串值是URL。傳遞URL到另一個活動的簡便方法是通過setData()方法向Intent添加一個Uri。下面是onItemClick()的最終實現,它啟動查看器活動,傳入合適的URL:

  1. @Override   
  2. public void onItemClick(AdapterView<?> parent, View view,  
  3.   int position, long id) {   
  4.   String content = links[position];   
  5.   Intent showContent = new Intent(getApplicationContext(), TutViewerActivity.class);   
  6.   showContent.setData(Uri.parse(content)); startActivity(showContent);   

如果你只是將這些代碼直接粘貼到onCreate()方法的***面,你會注意到links變量還沒有定義。因為它將用于OnItemClickListener類,變量必須是一個final值,如下:

  1. final String[] links = getResources().getStringArray(R.array.tut_links); 

這一行必須放在OnItemClickListener的定義之前。是的,你可以將它定義成非final的成員變量。對于更復雜的情況,那樣做甚至是必須的。但是在這里,我們可以在方法中放置所有代碼。現在如果你運行這個程序,你將得到一個空白的查看器界面。活動正確地啟動了,但是我們需要去連接查看器活動來在WebView控件中加載URL。

步驟7:加載URL

注意力回到TutViewerActivity.java文件。在調用setContentView()方法之后,添加代碼,在傳入的Intent中檢索Uri并將它轉換成String變量。然后將一個調用添加到WebView類的loadUrl()方法。整個TutViewerActivity類的代碼將看起來像這樣:

  1. public class TutViewerActivity extends Activity {   
  2. @Override   
  3.  public void onCreate(Bundle savedInstanceState) {   
  4.  super.onCreate(savedInstanceState);   
  5.  setContentView(R.layout.tut_view);   
  6.  Intent launchingIntent = getIntent();   
  7.  String content = launchingIntent.getData().toString();   
  8.  WebView viewer = (WebView) findViewById(R.id.tutView);   
  9.  viewer.loadUrl(content);   
  10. }   

現在再運行程序。正常了么?還沒有!***一個細節:你必須把網終權限添加到AndroidManifest.xml文件。現在運行這個程序,你將看到程序正常運行了:

步驟8:改善體驗(可選)目前來看,用戶體驗只是做到了僅僅是可以用。ListView展示所有文章標題,用戶可以點擊列表某一項并且可以轉到一個帶有WebView控件的活動來展示合適的URL的內容。為了將這個最基本的實現變得更優雅一些你可能考慮以下幾個方面:

設置瀏覽視圖的初始縮放以應對接來的縮放

配置WebView使其包含更多增強瀏覽體驗的控件

動態加載文章列表,而不是使用靜態數組

為ListView添加特效視覺效果

充分利用大屏幕

向ListView增加附加的信息:副標題,難度級別,圖標,已讀指示,收藏按鈕等。

總結

 

ListView小工具是在界面上以列表形式組織數據的快速方式。在這個教程中我們只是接觸到ListView控件的最表層。然而,你學到了最基礎的:創建列表項,使用數據適配器,以及處理列表項點擊。

【編輯推薦】

Android ListView詳解

Android應用——Activity傳參數與跳轉

Android Activity和Intent機制學習筆記

盤點Android開發者必備的十大開發工具

責任編輯:zhaolei 來源: 網絡轉載
相關推薦

2011-04-11 17:07:33

布局基礎用戶界面設計Android

2011-04-11 17:25:30

線性布局用戶界面設計Android

2011-04-08 13:58:10

Android界面設計

2011-04-19 09:19:37

相對布局界面設計Android

2011-05-19 08:49:01

使用片段界面設計Android

2011-04-22 11:01:36

框架布局界面設計Android

2011-06-01 10:58:57

2011-06-01 10:30:41

用戶界面

2011-12-20 10:42:22

Android應用界面設計

2011-03-02 10:49:42

DashboardAndroid用戶界面設計模板

2013-11-27 10:12:11

2011-03-02 14:03:02

DashboardAndroid用戶界面反例模板

2012-01-16 16:16:49

JavaSwing

2013-12-26 15:46:30

Android開發Android應用用戶界面設計

2014-11-26 10:42:55

界面設計

2012-01-16 11:03:09

javaswing

2011-06-01 09:31:46

用戶界面設計

2011-05-24 16:07:21

UI設計移動應用

2011-10-09 11:05:13

Android 4.0

2014-04-03 09:49:20

設計界面設計
點贊
收藏

51CTO技術棧公眾號

国产精品视频xxxx| 亚洲精品国精品久久99热| 亚洲精品一区二区三区av| 国产精品自拍第一页| 日韩1区在线| 欧美日韩精品欧美日韩精品| 在线视频精品一区| 超碰在线观看99| av不卡免费看| 国产午夜精品免费一区二区三区| 国产精品一区二区三区不卡 | 嫩草av久久伊人妇女超级a| 欧美日韩激情视频一区二区三区| 美女一区二区在线观看| 中文字幕不卡的av| 91久久国产婷婷一区二区| 91九色丨porny丨极品女神| 亚洲国产中文在线| 日韩欧美亚洲一二三区| 一区二区三区电影| 免费的黄色av| 久久亚洲电影| 亚洲欧美日韩视频一区| 污视频网站观看| 欧美v亚洲v| 久久精品一区二区三区av | 国产福利视频在线观看| 丁香婷婷综合色啪| 国产精品成人v| 中文字幕在线观看成人| 久草精品在线| 欧美日韩在线精品一区二区三区激情| 国产传媒一区二区| 国产一级片免费在线观看| 亚洲精品一区二区在线看| 亚洲国产高清高潮精品美女| 99re精彩视频| 性感女国产在线| 一区二区不卡在线播放| 日韩精品欧美专区| 日本黄色三级视频| 麻豆国产91在线播放| 国语自产精品视频在线看抢先版图片 | 亚洲一本视频| 国产丝袜一区二区| 不卡中文字幕在线观看| 在线观看网站免费入口在线观看国内 | 亚洲一区二区不卡视频| 国产欧美综合视频| 视频一区二区三区入口| 久久久噜噜噜久噜久久| 国产高清视频免费在线观看| 丝袜美腿综合| 精品国产一二三区| 交换做爰国语对白| 开心久久婷婷综合中文字幕| 欧美视频在线免费| 日本精品久久久久久久久久| 韩国av网站在线| 国产欧美日韩久久| 欧美资源一区| 日韩精品系列| 91小视频在线免费看| 国产精品jizz视频| 国产情侣在线播放| 九九久久精品视频| 国产精品丝袜一区二区三区| 51国产偷自视频区视频| 国产精品美女久久久| 孩xxxx性bbbb欧美| 国产黄色片视频| 欧美日韩一区二区国产| 欧美黄色性视频| 久久久国产成人| 欧美激情第10页| 欧美成人午夜影院| www青青草原| 国户精品久久久久久久久久久不卡| 精品播放一区二区| 国产av一区二区三区传媒| 国内不卡的一区二区三区中文字幕| 亚洲精品日产精品乱码不卡| 亚洲一区二区三区色| 草草影院在线观看| 国产精品拍天天在线| 视频一区国产精品| 色大18成网站www在线观看| 中文字幕的久久| 影音先锋在线亚洲| 在线三级中文| 性做久久久久久免费观看欧美| 日本一区二区高清视频| 精品推荐蜜桃传媒| 国产精品盗摄一区二区三区| 丰满女人性猛交| 久草成色在线| 一本色道久久综合亚洲91| 欧美成人黄色网址| 久久久久久久久久久久电影| 欧美大胆人体bbbb| 亚洲中文字幕无码av| 夜夜躁狠狠躁日日躁2021日韩| 欧美一级二级在线观看| 国产精品二区视频| 九一精品国产| 久久久精品视频成人| 久久免费视频精品| 91精品啪在线观看国产81旧版| 亚洲美女视频网| 四虎成人免费影院| 欧美精品aa| 欧美综合在线第二页| 成人免费一级片| 国产成人免费在线| 欧美一区二区视频在线| 日本电影全部在线观看网站视频| 欧美韩日一区二区三区四区| 亚洲国产精品女人| 在线观看网站免费入口在线观看国内 | 久久久久久久久丰满| 久久人人爽人人爽人人片av高清| 成人做爰视频网站| 免费看黄色的视频| 日韩国产大片| 精品国产一区二区在线观看| 精品无码国产污污污免费网站| 成人日韩视频| 日韩电影中文字幕在线| 午夜精品久久久久99蜜桃最新版| 伊人久久大香线蕉| 欧美另类在线播放| 国产乱码77777777| 国产1区2区3区精品美女| 日韩一区二区电影在线观看| 天堂av资源在线观看| 欧美亚洲国产一区二区三区va| www.国产区| 久久9999免费视频| 国产亚洲视频在线观看| 国产做受高潮漫动| 国产成人在线视频播放| 亚洲一区二区三区午夜| 日本不卡网站| 欧美v亚洲v综合ⅴ国产v| 中文字幕第二区| 久久国产精品久久久久久电车| 国产www精品| 无码国产伦一区二区三区视频| 99久久久国产精品免费蜜臀| 日本特级黄色大片| 成人日韩在线观看| 亚洲国产精品女人久久久| 亚洲精品乱码久久久久久久久久久久| 乱亲女h秽乱长久久久| 久99九色视频在线观看| av手机免费看| 国产午夜精品一区二区三区四区| 久久精品日产第一区二区三区乱码 | 日韩视频免费观看| 亚洲欧美一二三区| 99免费精品视频| cao在线观看| 91久久精品无嫩草影院| 久久国产精品久久精品| 97人妻精品一区二区三区视频| 国产成人免费视频一区| 自拍偷拍99| 久久久久伊人| 日韩网站免费观看| 成人国产一区二区| 亚洲欧洲视频在线观看| 亚洲国产精品久久久久秋霞影院 | 亚洲视频狠狠| 亚洲自拍偷拍视频| 日皮视频在线观看| 精品国产乱码久久久久久浪潮| 国产精品300页| 精品99视频| 91麻豆蜜桃| 亚洲成人三级| 欧美日韩一区不卡| 卡一卡二卡三在线观看| 免费在线欧美黄色| 蜜桃精品久久久久久久免费影院| 国产在线视频你懂得| 色狠狠一区二区| 一二三四在线观看视频| 麻豆国产欧美一区二区三区| 在线视频不卡一区二区三区| 国产一区一区| 午夜精品视频网站| 欧美日韩伦理片| 欧美日韩一级片网站| 天天色影综合网| 国产不卡一区视频| 六月婷婷在线视频| 国产亚洲一区二区三区不卡| 国产精品自产拍在线观| 中中文字幕av在线| 亚洲精品国精品久久99热| 成人免费一级片| 亚洲欧美区自拍先锋| 小毛片在线观看| 喷水一区二区三区| 超碰10000| 蜜桃tv一区二区三区| 国产精品一区av| 久久国产精品黑丝| 亚洲天堂久久av| 国产丝袜在线视频| 黑人巨大精品欧美一区二区免费| 先锋资源在线视频| 国产精品日韩久久久| 伊人久久大香线蕉午夜av| 久久精品一级| 国产成人综合av| 中文字幕有码在线观看| 亚洲欧美国内爽妇网| av一级黄色片| 日本久久一区二区三区| 久久精品www人人爽人人| 久久久五月婷婷| aaaaa黄色片| 日本色综合中文字幕| 日韩精品在线观看av| 成人一级毛片| 精品欧美一区二区三区久久久| 狂野欧美性猛交xxxxx视频| 日欧美一区二区| 国产在线视频2019最新视频| av2020不卡| x99av成人免费| 日韩在线无毛| 精品成人一区二区三区四区| 91麻豆国产视频| 色婷婷国产精品| 精品无码黑人又粗又大又长| 国产农村妇女精品| 免费成人蒂法网站| 成人毛片老司机大片| 色综合五月婷婷| 日韩专区在线视频| 噜噜噜久久亚洲精品国产品麻豆| 国偷自产视频一区二区久| 91精品久久久久久| 色偷偷偷在线视频播放| 久久99国产精品自在自在app | 欧美一区二区不卡视频| 波多野结衣啪啪| 黑人与娇小精品av专区| 国产亚洲精久久久久久无码77777| 精品中文字幕一区二区小辣椒 | 欧美日韩久久婷婷| 免费观看成人av| 日韩网址在线观看| 99香蕉国产精品偷在线观看 | 国产精品萝li| 国产aⅴ激情无码久久久无码| 三级不卡在线观看| 成人免费观看毛片| 久久成人在线| 免费黄色福利视频| 亚洲精品在线二区| 福利视频一二区| 亚洲成人资源| 久久国产精品视频在线观看| 亚洲黄色天堂| 美女日批免费视频| 一区二区毛片| 久久久噜噜噜www成人网| 蜜桃视频一区| 亚洲国产精品毛片av不卡在线| 91一区二区| 日本婷婷久久久久久久久一区二区 | 亚洲天堂av片| 丰满岳妇乱一区二区三区| 国产尤物在线视频| 狠狠躁夜夜躁人人躁婷婷91| 五月天激情国产综合婷婷婷| 日韩欧美国产中文字幕| 综合视频免费看| xxxxx日韩| 中文字幕日韩精品有码视频| 91社区在线| 美日韩精品视频免费看| 成年网站在线视频网站| 欧美自拍视频在线观看| 国产在线88av| 91成品人片a无限观看| 麻豆成全视频免费观看在线看| 亚洲人成网站色ww在线| 在线免费观看的av网站| 欧美成人在线免费视频| 超碰在线观看免费版| 久久久久久久久中文字幕| 亚洲第一av| 国产精品主播视频| 69精品国产久热在线观看| 蜜桃免费一区二区三区| 日本不卡二三区| 精品国产一区二区三区在线| 亚洲视频高清| 999在线免费视频| 麻豆精品在线看| 麻豆传媒在线看| 91网站在线观看视频| 一区二区三区在线播放视频| 夜夜嗨av一区二区三区| 日韩视频在线观看一区| 3d动漫精品啪啪1区2区免费 | 2018国产精品| 久久亚洲综合色| 日韩在线不卡av| 精品国产1区2区| 国产精品国产三级国产aⅴ| 亚洲缚视频在线观看| av中文天堂在线| 国内精品400部情侣激情| 国产经典一区| 国产久一道中文一区| 成人精品中文字幕| 日日摸日日碰夜夜爽无码| 久久99国产精品免费| 黄色性生活一级片| 一区二区三区欧美在线观看| 国产精品自拍第一页| 日韩欧美国产系列| 国产黄色片在线播放| 欧美激情综合亚洲一二区| 电影亚洲一区| 免费精品视频一区二区三区| 亚洲国产一区二区三区在线播放| 992tv快乐视频| 日精品一区二区三区| 国产又粗又长又爽| 亚洲你懂的在线视频| 亚洲综合成人av| 日韩高清欧美高清| 欧美videosex性极品hd| 91免费看片在线| 久久要要av| 国产精品69页| 狠狠久久亚洲欧美| 人妻精品久久久久中文| 日韩av系列| 国产传媒一区| 欧美88av| 国产成年人视频网站| 国产精品女人毛片| 中文字幕日本视频| 亚洲色图18p| 大胆人体一区| 日本免费高清不卡| 老**午夜毛片一区二区三区| 中文字幕日韩三级片| 精品伦精品一区二区三区视频密桃 | 国产91色在线观看| 久久亚洲综合色| 久久久久久久黄色片| 亚洲国产第一页| 99爱在线观看| 国产一区二区三区高清| 日韩一级不卡| 黄色a级三级三级三级| 中文字幕日本不卡| 夜夜躁很很躁日日躁麻豆| 中文字幕一区电影| 在线一区av| 青青草成人网| 美国av一区二区| av网页在线观看| 欧美日韩国产中字| 午夜福利一区二区三区| 欧美一区二区色| 神马影视一区二区| 在线视频日韩一区| 国产精品嫩草影院com| 国产又粗又猛又爽又黄视频| 久久精品在线视频| 精品国产三区在线| 日本男女交配视频| 99久久婷婷国产| 免费一级a毛片| 久久久国产精品视频| 美国十次综合久久| 成品人视频ww入口| 久久免费偷拍视频| 亚洲最大成人av| 欧美另类在线观看| 欧美调教在线| 成人性生生活性生交12| 最新日韩av在线| 黄色美女一级片| 国产91精品视频在线观看| 成人在线免费观看网站| 1314成人网| 欧美性jizz18性欧美| 成人jjav| 99re在线国产| 日韩高清在线电影|