因爲一直覺得RecyclerView用起來很簡單,我就引入了包後,直接寫了個控件:
</pre><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'宋體';font-size:10.5pt;"><span style="color:#e8bf6a;"><android.support.v7.widget.RecyclerView </span><span style="color:#e8bf6a;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:id=</span><span style="color:#a5c261;">"@+id/main_fragment_recycler_view" </span><span style="color:#a5c261;"> </span><span style="color:#bababa;">xmlns:</span><span style="color:#9876aa;">android</span><span style="color:#bababa;">=</span><span style="color:#a5c261;">"http://schemas.android.com/apk/res/android" </span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_width=</span><span style="color:#a5c261;">"match_parent" </span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_height=</span><span style="color:#a5c261;">"match_parent" </span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:clipToPadding=</span><span style="color:#a5c261;">"false" </span><span style="color:#a5c261;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:scrollbars=</span><span style="color:#a5c261;">"none"</span><span style="color:#e8bf6a;">> </span><span style="color:#e8bf6a;"> </span><span style="color:#e8bf6a;"></android.support.v7.widget.RecyclerView></span>
然後,在activity中啥都沒幹,先編譯一下吧。
結果編譯通過,運行時遇到這個錯誤:
java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean android.support.v7.widget.RecyclerView$LayoutManager.canScrollVertically()’ on a null object reference
看一下字面意思:空指針,試圖在一個空的對象引用上調用一個虛擬方法canScrollVertically()
回去看了一下文檔,原來RecyclerView將 layout 抽象成了一個 LayoutManager,RecyclerView 不負責子 View 的佈局,我們可以自定義 LayoutManager 來實現不同的佈局效果,目前只提供了LinearLayoutManager。 LinearLayoutManager 可以指定方向,默認是垂直, 可以指定水平, 這樣就輕鬆實現了水平的 ListView。
最後結論,使用RecyclerView必須定義一個Manager()佈局管理器,否則會造成點擊crash。我們
需要自己定義一個LayoutManager:
<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'宋體';font-size:10.5pt;">LinearLayoutManager layoutManager = <span style="color:#cc7832;">new </span>LinearLayoutManager(<span style="color:#9876aa;">context</span>)<span style="color:#cc7832;">; </span>layoutManager.setOrientation(LinearLayoutManager.<span style="color:#9876aa;"><em>VERTICAL</em></span>)<span style="color:#cc7832;">; </span><span style="color:#9876aa;">mRecyclerView</span>.setLayoutManager(layoutManager)<span style="color:#cc7832;">;</span>