RecyclerViewの初期使用で発生した問題


最近ずっと他のプロジェクトで忙しくて、RecyclerViewが出てきた後、大体見てみましたが、実際のプロジェクトでは使われていませんでしたが、今日は暇があったら小さなプログラムを書いて、ちょうど使って、次のような問題に遭遇しました.
RecyclerViewは使いやすいと思っていたので、パッケージを導入して、直接コントロールを書きました.
    .support.v7.widget.RecyclerView
        android:id="@+id/mountain_list"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

そして、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を簡単に実現できます.
最後に、LayoutManagerを定義する必要があります.
rv = (RecyclerView)findViewById(R.id.rv);

LinearLayoutManager layoutManager = new LinearLayoutManager(context);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
rv.setLayoutManager(layoutManager);