在Android與recyclerview中使用列表和網格

1。Android和列表或網格

1.1。在Android中使用列表或網格

原文博客地址:http://www.apkbus.com/blog-920677-76896.htmlhtml

在列表或網格元素的顯示是移動應用的一個很常見的模式。 用戶看到的項目的集合,能夠經過滾動的集合。 項目能夠是一個列表,網格或另外一種結構化的數據表示。 等活動所描繪的是一個。java

用戶經過觸摸事件或工具欄項的集合的相互做用。 個別項目能夠選擇。 這個選擇可能更新工具欄或屏幕詳細基於觸發的選擇。 如下。android

1.2。使用recyclerview

這個recyclerview類支持一系列的數據顯示。編程

這是一個現代版的ListViewGridView控件Android框架提供的類。 回收觀問題,現有部件的地址有幾個。 它執行的編程風格,產生了良好的性能。 它默認動畫去也。app

recyclerview容許使用不一樣的佈局管理器定位項目。框架

回收視圖使用viewholder存儲引用的觀點來看,在回收一個條目。 viewholder類在適配器持有相關觀點引用靜態內部類。 這些引用你的代碼能夠避免findviewbyid()用新的數據更新的部件的方法。函數

1.3。適配器

一個適配器管理數據模型和適應個別條目 擴展部件。recyclerview。適配器階級和被分配到回收的觀點經過recyclerview.setadapter方法。輸入適配器一個回收的 視圖能夠是任意的java對象。 在此輸入適配器總數必須歸還物品getitemcount()方法工具

適配器準備項目的佈局,爲每一個單獨的數據元素充氣正確的佈局。 這工做了oncreateviewholder方法 它返回一個對象。viewholder每一個視覺進入回收期。佈局

這個實例是用於訪問在佈局視圖。 oncreateviewholder方法只叫新視圖必須建立。性能

在一個回收查看每個可見的入口充滿了正確的數據模型項的適配器。 一旦數據項變得可見,適配器將此數據個別部件他膨脹的早期工做。 這onbindviewholder方法

例如,在一個列表中的條目可能會在左側,兩行文字中,以下面的圖形描述的圖像。

一個這樣的線可能看起來像下面的佈局文件。

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="6dip" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="6dip"
        android:contentDescription="TODO"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/secondLine"
        android:layout_width="fill_parent"
        android:layout_height="26dip"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/icon"
        android:ellipsize="marquee"
        android:maxLines="1"
        android:text="Description"
        android:textSize="12sp" />

    <TextView
        android:id="@+id/firstLine"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/secondLine"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_alignWithParentIfMissing="true"
        android:layout_toRightOf="@id/icon"
        android:gravity="center_vertical"
        android:text="Example application"
        android:textSize="16sp" />

</RelativeLayout>

1.4。Gradle依賴使用回收的觀點

 

這個recyclerview部件交付做爲圖書館能夠做爲API 7級或更高。 添加一個依賴最新版本庫到你的搖籃,創建文件使用。

 

dependencies {
    ...
    compile "com.android.support:recyclerview-v7:25.3.1"
}

 

1.5。默認的佈局管理器

佈局管理器決定如何在數據recyclerview顯示。 回收查看圖書館提供下列建設佈局。

  • linearlayoutmanager顯示垂直滾動列表或水平的項目。

  • gridlayoutmanager顯示在一個網格項目。

  • staggeredgridlayoutmanager顯示在一個網格項目。

1.6。有關實現類的使用recyclerview

實施recyclerview須要幾類來實現。 類最重要的列在下面

表1。重要的recyclerview API
目的 可選

適配器

提供的數據,負責建立的我的參賽的意見

要求的

viewholder

包含全部的視圖的輸入數據填充的參考

要求的

佈局管理器

包含全部的視圖的輸入數據填充的參考

須要,可是默認的實現

itemdecoration

負責繪製裝飾在頂部或入口視圖容器

默認的行爲,但能夠被重寫

itemanimator

負責若是添加條目定義動畫,刪除或從新排序

默認的行爲,但能夠被重寫

你也能夠爲佈局管理器和動畫提供自定義實現。

1.7。在回收處理單擊事件的見解

觸摸事件,如點擊應該由回收的意見處理。 若是視圖應該引起一些對象在使用它(活動或片斷),你能夠經過構造函數的適配器經過它。 這容許適配器存儲對象的引用和調用它的方法。

 

1.8。在回收視圖佈局

適配器須要爲每一個條目提供的視圖層次結構。 典型完成充氣的XML佈局。

 

 

<LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight">
        <!-- views contained in each line -->
</LinearLayout>

 

 

這根的佈局是一個典型的ViewGroup(佈局管理器)和包含幾個其餘的觀點。 下圖顯示列表佈局爲奇數和偶數的不一樣了。

getitemviewtype方法的回收期肯定哪些類型應該用於數據 框架自動調用。oncreateviewholder若是這種類型的須要。 這個方法你佈置充氣正確的類型,並返回一個擬合的觀點。

1.9。自定義動畫

在「自定義動畫recyclerview,實現本身的動畫的擴展recyclerview.itemanimator類並使用recyclerview。setitemanimator()方法爲它指定 你的插件。

1.10。過濾和排序

過濾和排序是經過適配器來處理。 你須要邏輯在自定義適配器來實現。

1.11。在適配器的數據更新

這個notifyiteminserted(位置)在適配器的方法能夠用來通知認爲,一個新條目已插在某個位置。

這個notifyitemremoved(位置)方法可用於通知認爲條目已在某個位置刪除。

1.12。對於recyclerview刷卡支持

這個itemtouchhelper類使刷卡解僱和拖放簡單實現。 實施ONMOVE拖放的方法和onswiped對核工業的支持。

看到[ recyclerview_swipe ]一個實例的實現。

 

2。練習:使用一個新的Android應用程序recyclerview

在這個練習中你建立了一個項目使用recyclerview類顯示一個列表。

2.1。建立項目並添加工具的依賴

建立一個新的Android項目使用com.vogella.android.recyclerview頂層包名。

添加如下依賴你的搖籃,構建文件。

 

dependencies {
    ...
    compile "com.android.support:recyclerview-v7:25.3.1"
}

 

 

2.2。建立佈局文件

 

建立或更新配置文件稱爲activity_main.xml因此,它包含recyclerview

 

 

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

    <!-- A RecyclerView with some commonly used attributes -->

    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="12dp"
        android:layout_marginRight="12dp"
        android:elevation="2dp"
        android:src="@android:drawable/ic_menu_add" />

</RelativeLayout>
相關文章
相關標籤/搜索