小編給大家分享一下android中RecyclerView怎么用,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有賀州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。為了讓RecyclerView可以在所有的Android版本中都能使用,Android開發(fā)團(tuán)隊(duì)將RecyclerView定義在support.v7包當(dāng)中。在使用該控件時(shí)需要打開當(dāng)前Modile的build.gradle文件,然后在dependencies節(jié)點(diǎn)中添加依賴庫的代碼。具體代碼如下:
compile 'com.android.support:recyclerview-v7:插入版本號(hào)'
添加完成以后需要單擊右上角的Sync Now進(jìn)行同步。同步完成后可以在布局文件中添加RecyclerView控件,語法格式如下:
控制RecyclerView需要一些常用的方法,具體方法如下:
◆ setLayoutManager:設(shè)置列表項(xiàng)的布局管理器,LinearLayoutManager為線性布局管理器、GridLayoutManager為網(wǎng)格布局管理器、StaggeredGridLayoutManager為瀑布流網(wǎng)格布局管理器。
◆ setItemAnimator:設(shè)置列表項(xiàng)增加或者是刪除時(shí)的動(dòng)畫,可以使用關(guān)鍵字new創(chuàng)建 DefaultItemAnimator()對(duì)象實(shí)現(xiàn)系統(tǒng)默認(rèn)的動(dòng)畫效果。
◆ addItemDecoration:添加列表項(xiàng)分割線。
◆ addOnItemTouchListener:添加列表項(xiàng)的觸摸監(jiān)聽器。
◆ removeOnItemTouchListener:移除列表項(xiàng)的觸摸監(jiān)聽器。
◆ setAdapter:設(shè)置列表項(xiàng)的適配器,使用RecyclerView.Adapter。
RecyclerView.Adapter是為RecyclerView所單獨(dú)設(shè)計(jì)的適配器類,RecyclerView.Adapter的相關(guān)方法如下:
◆ getItemCount:獲取列表項(xiàng)的數(shù)目。
◆ onBindViewHolder:綁定列表項(xiàng)中所顯示的數(shù)據(jù)。
◆ onCreateViewHolder:在該方法中可以加載列表item(子項(xiàng))中的布局文件。
下面通過一個(gè)具體的實(shí)例演示RecyclerView垂直列表的具體應(yīng)用。
實(shí)例07 模擬QQ消息列表 實(shí)例位置:光盤\Code\SL\27\07
視頻位置:光盤\Video
在Android Studio中創(chuàng)建Module,名稱為“QQMessageList”,具體步驟如下:
(1)打開build.gradle(Module: QQMessageList)文件,然后在該文件中的dependencies節(jié)點(diǎn)中添加依賴庫的代碼。
(2)修改新建Module的res/layout目錄下的布局文件activity_main.xml,將默認(rèn)添加的布局管理器修改為相對(duì)布局管理器并將TextView組件刪除,然后添加1個(gè)RecyclerView組件用于顯示消息列表。具體代碼如下:
01 0208 09 16
(3)在res/layout目錄中創(chuàng)建1個(gè)名稱為layout_item.xml的布局文件,將默認(rèn)添加的布局管理器修改為相對(duì)布局管理器,首先添加1個(gè)ImageView組件用于顯示頭像的圖標(biāo),然后添加1個(gè)垂直線性布局管理器,在該布局管理器中添加2個(gè)TextView組件分別用于顯示名稱與文字消息。具體代碼如下:
01 0208 09 16 22 23 4030 31 39
(4)在res/values目錄中的strings.xml字符串資源文件內(nèi)添加名字與文字消息,用于顯示在列表當(dāng)中。
(5)在com.mingrisoft包中創(chuàng)建1個(gè)名稱為Adapter的Java類,首先在該類中創(chuàng)建1個(gè)名稱為MyViewHolder的內(nèi)部類并讓該類繼承自RecyclerView.ViewHolder,在該內(nèi)部類中獲取列表中用于顯示名稱、頭像圖標(biāo)與文字信息的組件。然后讓Adapter類繼承自RecyclerView.Adapter
01 public class Adapter extends RecyclerView.Adapter{ 02 @Override 03 public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 04 return null; 05 } 06 @Override 07 public void onBindViewHolder(MyViewHolder holder, int position) { 08 } 09 @Override 10 public int getItemCount() { 11 return 0; 12 } 13 class MyViewHolder extends RecyclerView.ViewHolder { 14 public TextView name, info; //編號(hào)文字 15 public ImageView img; //圖標(biāo) 16 17 //獲取相關(guān)控件 18 public MyViewHolder(View itemView) { 19 super(itemView); 20 name = (TextView) itemView.findViewById(R.id.name); 21 info = (TextView) itemView.findViewById(R.id.info); 22 img = (ImageView) itemView.findViewById(R.id.img); 23 } 24 } 25 }
(6)創(chuàng)建3個(gè)int類型的數(shù)組分別用于保存頭像的圖標(biāo)資源、名字、文字信息,然后創(chuàng)建3個(gè)ArrayList集合分別用于保存數(shù)組中的資源文件,最后創(chuàng)建1個(gè)Adapter構(gòu)造方法,在該方法中設(shè)置菜單行數(shù)與行內(nèi)圖標(biāo)、名稱與文字信息具體代碼如下:
01 //圖標(biāo)數(shù)組 02 private int[] icons = { 03 R.mipmap.icon_1, R.mipmap.icon_2, R.mipmap.icon_3, 04 R.mipmap.icon_4, R.mipmap.icon_5, R.mipmap.icon_6, 05 R.mipmap.icon_7, R.mipmap.icon_8, R.mipmap.icon_9, 06 R.mipmap.icon_10, R.mipmap.icon_11 07 }; 08 //名字?jǐn)?shù)組,引用資源文件中的文字 09 private int[] names = { 10 R.string.name1, R.string.name2, R.string.name3, 11 R.string.name4, R.string.name5, R.string.name6, 12 R.string.name7, R.string.name8, R.string.name9, 13 R.string.name10, R.string.name11 14 }; 15 //信息數(shù)組 16 private int[] infos = { 17 R.string.info1, R.string.info2, R.string.info3, 18 R.string.info4, R.string.info5, R.string.info6, 19 R.string.info7, R.string.info8, R.string.info9, 20 R.string.info10, R.string.info11 21 }; 22 private Context lContext; //上下文 23 private ListlistIcon = new ArrayList (); //圖標(biāo)集合 24 private List listName = new ArrayList (); //名稱集合 25 private List listInfo = new ArrayList (); //信息集合 26 public Adapter(Context context) { 27 lContext = context; 28 //設(shè)置菜單行數(shù)與行內(nèi)圖標(biāo)、名稱、信息 29 for (int i = 0; i < 11; i++) { 30 listIcon.add(icons[i]); 31 listName.add(names[i]); 32 listInfo.add(infos[i]); 33 } 34 }
(7)重寫MyViewHolder onCreateViewHolder()方法,在該方法中實(shí)現(xiàn)獲取列表中,每行item的布局文件。修改后代碼如下:
01 @Override 02 public MyViewHolder onCreateViewHolder(ViewGroup arg0, int arg1) { 03 //獲取列表中,每行的布局文件 04 View view = LayoutInflater.from(lContext).inflate(R.layout.layout_item, arg0, false); 05 MyViewHolder holder = new MyViewHolder(view); // 06 return holder; 07 }
(8)重寫onBindViewHolder()方法,在該方法中設(shè)置列表菜單中item(子項(xiàng))所顯示的內(nèi)容。修改后代碼如下:
01 @Override 02 public void onBindViewHolder(final MyViewHolder holder, int position) { 03 //設(shè)置圖標(biāo) 04 holder.img.setBackgroundResource(listIcon.get(position)); 05 //設(shè)置名稱 06 holder.name.setText(listName.get(position)); 07 //設(shè)置信息 08 holder.info.setText(listInfo.get(position)); 09 }``
(9)重寫getItemCount()方法,在該方法中實(shí)現(xiàn)返回?cái)?shù)據(jù)集中的項(xiàng)目總數(shù)。修改后代碼如下:
01 @Override 02 public int getItemCount() { 03 return listIcon.size(); 04 }
(10)打開主活動(dòng)MainActivity.java文件,定義所需要的全局變量,在onCreate()方法中首先獲取RecyclerView組件,然后為其設(shè)置列表布局管理器,最后為其設(shè)置適配器。具體代碼如下:
01 public class MainActivity extends AppCompatActivity { 02 private RecyclerView lRecyclerView; //列表控件 03 private Adapter lAdapter; //適配器 04 @Override 05 protected void onCreate(Bundle savedInstanceState) { 06 super.onCreate(savedInstanceState); 07 setContentView(R.layout.activity_main); 08 //獲取列表控件 09 lRecyclerView = (RecyclerView) findViewById(R.id.recyclerview); 10 //設(shè)置列表布局管理 11 lRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 12 //設(shè)置適配器 13 lRecyclerView.setAdapter(lAdapter = new Adapter(this)); 14 } 15 }
(10)在工具欄中,找到 下拉列表框,然后單擊要運(yùn)行的應(yīng)用(這里為QQMessageList),再單擊右側(cè)的 運(yùn)行按鈕,運(yùn)行效果如圖27.27所示。
圖27.27 模擬QQ消息列表
看完了這篇文章,相信你對(duì)“android中RecyclerView怎么用”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。