StickyListHeadersが数年前からメンテ停止しているので、RecyclerView を拡張してそれっぽい View のライブラリを作ってみようという闇の計画。
現時点で、計画が成就するのかマジでわからない。 そして誰得でもある。
Android ライブラリとは
ソースコードファイルもあるし res もあるし、パッと見本当に一緒です。
個人的に、「そもそもモジュールってなんだ全然わからん」状態だったので、そこから調べてみた。 いかに基礎が分かっていないかバレてしまいますねヾ(:3ノシヾ)ノシ
モジュールとは
モジュールとはソースファイルとビルド設定のコレクションであり、モジュールによって機能ごとにプロジェクトを分割できます。プロジェクトには 1 つまたは多数のモジュールを含めることができ、モジュールは別のモジュールを依存関係として使用できます。各モジュールは個別にビルド、テスト、デバッグを実行できます。
ある機能をどこからでも利用するために分割されたソースコードの塊、といった感じか。app もモジュールなんですよね。
モジュールを作って参照してみる
最初から「よっしゃオリジナルな RecyclerView 作ったるで!!」って意気込んだら速攻で挫折したので、おとなしく RecyclerView をラップしただけのモジュールを作って app モジュールから参照してみました。
モジュールの生成
File → New → New Module...の順にクリックAndroid Libraryを選択してNextをクリック
ライブラリの名称とかの入力が出てくるので、次のとおりに入力。
| item | 入力値 |
|---|---|
| Apprication/Library Name | MyRecyclerView |
| Module Name | myrecyclerview |
| Package Name | work.kcs_labo.myrecyclerview |
すると、左側の Project に myrecyclerview というモジュールが生成されると思います。こんな感じ。

なお、今後のライブラリ公開を考えるならば、入力値はこちらの Qiita を参考にしてください。
MyRecyclerView を作る
myrecyclerview に app と同じくソースコードファイルを入れるパッケージがあるので、Kotlin ファイル作って次のコードを記述する。
package work.kcs_labo.myrecyclerview import android.content.Context import android.util.AttributeSet import androidx.recyclerview.widget.RecyclerView class MyRecyclerView: RecyclerView { constructor(context: Context): super(context) constructor(context: Context, attrs: AttributeSet): super(context, attrs) constructor(context: Context, attrs: AttributeSet, defStyle: Int): super(context, attrs, defStyle) }
RecyclerView を継承した MyRecyclerView を作っただけ。
さっそくこれを app モジュールに依存関係指定して import してみる。
app から参照してみる
build.gradle に次のとおり依存関係を指定。
dependencies {
implementation project(':myrecyclerview')
}
このへんの Gradle の記述はてくぶさんの記事を参照。
んで、MainActivity なんかで次のとおり記述すると参照できていることがわかる。
import work.kcs_labo.myrecyclerview.MyRecyclerView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val hoge = MyRecyclerView(this) } }
まとめ
New Module... でモジュール作って Gradle で参照してみましょう!というだけの記事でした(ぇ
RecyclerView の実装はやったことあるけど、ライブラリとして機能を提供するのってどうやるんだ……?????
って小一時間以上悩んでもうつらみしかない。
次は、ごく簡単な機能を提供する記事を書きたい。