天天看點

一起Talk Android吧(第七十七回:Android中UI控件之RecyclerView變化)

各位看官們,大家好,上一回中咱們說的是Android中UI控件之RecyclerView基礎的例子,這一回咱們說的例子是UI控件之RecyclerView變化。閑話休提,言歸正轉。讓我們一起Talk Android吧!

看官們,我們在本章回中主要介紹RecyclerView的變化:橫向滾動顯示。這是RecyclerView的優勢,也是ListView望塵莫及的地方。這也是ListView被取代的原因之一。在介紹該内容之前,我們對RecyclerView的基礎内容再做一點補充:

RecyclerView

中的事件處理。(因為上一章回的内容太多了,是以把事件處理放到了這裡)

事件處理是經常使用的功能,幾乎每個元件都有該功能,不過RecyclerView沒有直接提供該功能,也就是說它不能像ListView一樣設定事件監聽器,因為它沒有提供相關的事件監聽器。有看官說:是不是

RecyclerView

不能處理事件呢?不是,它把事件處理交給了它包含的其它元件,也就是說它間接地提供了事件處理功能。是不是覺得有點繞呢?沒關系,接下來我們看看代碼:

mListView.setOnItemClickListener //這是ListView在設定事件監聽器
        public CustomViewHolder(View v){
            super(v);
            //擷取TextView元件并且給它設定事件監聽器
            tv =(TextView) v.findViewById(R.id.id_recy_view_item_text); 
            tv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(v.getContext(),tv.getText()+" 
                    is clicked.",Toast.LENGTH_LONG).show();
                }
            });
        }
           

大家還記得上一章回中

ViewHolder

的構造函數吧,我們在構造函數裡擷取了TextView元件,然後給它設定了事件監聽器,這就相當于間接地給

RecyclerView

設定了事件監聽器。因為TextView元件被包含在RecyclerView元件中,它可以看作是RecyclerView元件的一部分。我們再推廣一下,隻要是給包含于RecyclerView元件中的元件設定了事件監聽器,就相當于給RecyclerView設定了事件監聽器。好了,關于RecyclerView元件中事件處理的内容就介紹這些,接下來回歸本章回的主題。

RecyclerView在處理橫向滾動顯示方面比較容易,因為它借助了布局管理器,下面是具體的代碼,請參考:

mLinearLayoutManager = new LinearLayoutManager(MainActivity.this);
        // 使用布局管理器的setOrientation方法修改布局的Orientation屬性
        mLinearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);
           

這裡有看官驚訝地說:這就實作了?是的,不過還需要對

RecyclerView

包含的布局檔案做一些小處理,主要是修改布局中元件的長寬屬性,以便它們可以橫向顯示。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   <!--       android:layout_width="match_parent" --> 
              android:layout_width="60dp"
              android:layout_height="wrap_content">

   <TextView
        android:id="@+id/id_recy_view_item_text"
        android:layout_width="50dp"
        android:layout_height="wrap_content"/>
</LinearLayout>
           

上面的代碼就是包含于RecyclerView元件中布局檔案的源代碼,其中注釋掉的内容用來縱向滾動顯示。此外,剛才我們添加事件的的

TextView

元件,就是該布局檔案中的

TextView

元件,大家從代碼中也可以看出來。下面是程式的運作結果,請大家參考:

一起Talk Android吧(第七十七回:Android中UI控件之RecyclerView變化)

各位看官,關于Android中UI控件之RecyclerView變化的例子咱們就介紹到這裡,欲知後面還有什麼例子,且聽下回分解!

繼續閱讀