技術評論社出版の「作って学ぶ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
メソッドは使用できると思うのですが、何故使用できないのかが理解できずにいます。
どなたかご教授いただけますでしょうか。
回答1件
あなたの回答
tips
プレビュー