質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

2155閲覧

List.addAllメソッドを使うことができない

Kawboy442

総合スコア14

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2020/04/23 12:36

技術評論社出版の「作って学ぶAndroidアプリ開発 [Kotlin対応]」(https://gihyo.jp/book/2020/978-4-297-11343-8)を購入して、写経の要領で進めていたのですが、下記のコードで詰まっています。

Kotlin

1class TootListFragment: Fragment(R.layout.fragment_toot_list) { 2 3 companion object { 4 val TAG = TootListFragment::class.java.simpleName 5 6 private const val API_BASE_URL = "https://androidbook2020.keiji.io" 7 } 8 9 private var binding: FragmentTootListBinding? = null 10 11 private val moshi = Moshi.Builder() 12 .add(KotlinJsonAdapterFactory()) 13 .build() 14 15 private val retrofit = Retrofit.Builder() 16 .baseUrl(API_BASE_URL) 17 .addConverterFactory(MoshiConverterFactory.create(moshi)) 18 .build() 19 20 private val api = retrofit.create(MastodonApi::class.java) 21 22 private val coroutineScope = CoroutineScope(Dispatchers.IO) 23 24 private lateinit var adapter: TootListAdapter 25 private lateinit var layoutManager: LinearLayoutManager 26 27 private var tootList = ArrayList<Toot>() 28 29 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 30 super.onViewCreated(view, savedInstanceState) 31 32 adapter = TootListAdapter(layoutInflater, tootList) 33 34 layoutManager = LinearLayoutManager( 35 requireContext(), 36 LinearLayoutManager.VERTICAL, 37 false) 38 39 val bindingData: FragmentTootListBinding? = DataBindingUtil.bind(view) 40 binding = bindingData ?: return 41 42 bindingData.recyclerView.also { 43 it.layoutManager = layoutManager 44 it.adapter = adapter 45 } 46 47 coroutineScope.launch { 48 val tootList = api.fetchPublicTimeline() 49 tootList.addAll(tootList) 50 reloadTootList() 51 } 52 } 53 54 override fun onDestroyView() { 55 super.onDestroyView() 56 57 binding?.unbind() 58 } 59 60 private suspend fun reloadTootList() = withContext(Dispatchers.Main) { 61 adapter.notifyDataSetChanged() 62 } 63}

コード内のtootList.addAll(tootList).addAllメソッドが使うことができず、警告が出ている状態です。

インスタンス化しているapi.fetchPublicTimeline()メソッドは以下のようになっています。

Kotlin

1interface MastodonApi { 2 3 @GET ("api/v1/timelines/public") 4 suspend fun fetchPublicTimeline ( 5 ): List<Toot> 6}

型がList型なので、.addAllメソッドは使用できると思うのですが、何故使用できないのかが理解できずにいます。

どなたかご教授いただけますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/04/23 13:11

どういう警告が出てるんでしょうか。 そのメッセージをコピペでそのまま提示しましょう
jimbe

2020/04/23 15:37

> tootList.addAll(tootList) 自身に自身を?
Kawboy442

2020/04/23 22:39 編集

大変失礼しました。エラーは以下の通りです。 /Users/itouryousuke/Downloads/git/MastodonClient/app/src/main/java/com/ritou/android/mastodonclient/TootListFragment.kt: (66, 22): Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: public fun <T> MutableCollection<in ???>.addAll(elements: Array<out ???>): Boolean defined in kotlin.collections public fun <T> MutableCollection<in ???>.addAll(elements: Sequence<???>): Boolean defined in kotlin.collections public fun <T> MutableCollection<in Toot>.addAll(elements: Iterable<Toot>): Boolean defined in kotlin.collections
guest

回答1

0

ベストアンサー

書籍の(著者の?) GitHub の履歴 によると, 該当箇所のコードは

kotlin

1coroutineScope.launch { 2 val tootListResponse = api.fetchPublicTimeline() 3 tootList.addAll(tootListResponse) 4 reloadTootList() 5}

です.

投稿2020/04/23 16:18

編集2020/04/23 16:24
jimbe

総合スコア13209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kawboy442

2020/04/23 22:41

ありがとうございました! サンプルコードがあることも失念しておりました… もう少し精進します…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問