LoginSignup
6
1

More than 3 years have passed since last update.

[参考書]Android アプリ開発入門で詰まったところ

Last updated at Posted at 2019-08-15

SBクリエイティブの基本からしっかり身につくAndroidアプリ開発入門をやっていて、サンプルコードでエラーになるところをあげます。

Capter6のRSSリーダーアプリ作成時のAsyncTaskLoaderを使うところで、コードの変更(loaderManagersupportLoaderManagerへ)が必要でした。

  • エラー
Type inference failed: fun <D : Any!> initLoader(p0: Int, p1: Bundle!, p2: LoaderManager.LoaderCallbacks<D!>!): Loader<D!>!
cannot be applied to
(Int,Nothing?,MainActivity)
  • コード
package com.example.rssreader


import android.os.Bundle
import android.support.v4.app.LoaderManager
import android.support.v4.content.Loader
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.GridLayoutManager
import android.support.v7.widget.RecyclerView

class MainActivity : AppCompatActivity(), LoaderManager.LoaderCallbacks<Rss> {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // ここをsupportLoaderManagerに変更する
//        loaderManager.initLoader(1, null, this)
        supportLoaderManager.initLoader(1, null, this)
    }

    override fun onCreateLoader(id: Int, args: Bundle?): Loader<Rss> {
        return RssLoader(this)
    }

    override fun onLoadFinished(loader: Loader<Rss>, data: Rss?) {
        if (data != null) {
            // recycler view
            val recyclerView = findViewById<RecyclerView>(R.id.articles)

            val adapter = ArticleAdpter(this, data.articles) {
                // 記事タップしたときの処理

            }

            recyclerView.adapter = adapter

            // グリット表示
            val layoutManager = GridLayoutManager(this, 2)

            recyclerView.layoutManager = layoutManager
        }
    }

    override fun onLoaderReset(p0: Loader<Rss>) {
        // do nothing
    }
}

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1