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

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

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

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

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

Kotlin

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

Q&A

解決済

1回答

402閲覧

adapterについて教えてください

soruto

総合スコア1

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

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

Kotlin

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

0グッド

0クリップ

投稿2024/05/17 00:54

編集2024/05/17 11:27

実現したいこと

kotlin初心者です。GitHubで公開されているリポジトリを検索するアプリを作成しています。recyclerView.adapterを使い、RepoAdapter(repos)でreposを引数として渡したいのですがRepoAdapter側の記述の仕方が分かりません。ご教授いただけると幸いです。

発生している問題・分からないこと

引数にToo many arguments for public constructor RepoAdapter() defined in com.example.yourprojectname.RepoAdapterと表示されてしまう

エラーメッセージ

error

1Too many arguments for public constructor RepoAdapter() defined in com.example.yourprojectname.RepoAdapter

該当のソースコード

MainActivity

1import android.content.Intent 2import android.os.Bundle 3import android.widget.Button 4import android.widget.EditText 5import android.widget.Toast 6import androidx.appcompat.app.AppCompatActivity 7import androidx.recyclerview.widget.LinearLayoutManager 8import androidx.recyclerview.widget.RecyclerView 9import com.example.github.GitHubService 10import com.example.github.R 11import com.example.github.RepoSearchResponse 12import com.example.yourprojectname.RepoAdapter 13import retrofit2.Call 14import retrofit2.Callback 15import retrofit2.Response 16import retrofit2.Retrofit 17import retrofit2.converter.gson.GsonConverterFactory 18 19class MainActivity : AppCompatActivity() { 20 val searchButton: Button = findViewById(R.id.search_button) 21 val searchEditText: EditText = findViewById(R.id.search_edit_text) 22 val recyclerView: RecyclerView = findViewById(R.id.recycler_view) 23 private val retrofit = Retrofit.Builder() 24 .baseUrl("https://api.github.com/") 25 .addConverterFactory(GsonConverterFactory.create()) 26 .build() 27 28 29 private val service = retrofit.create(GitHubService::class.java) 30 31 override fun onCreate(savedInstanceState: Bundle?) { 32 super.onCreate(savedInstanceState) 33 setContentView(R.layout.activity_main) 34 35 36 37 38 searchButton.setOnClickListener { 39 val query = searchEditText.text.toString() 40 service.searchRepositories(query).enqueue(object : Callback<RepoSearchResponse> { 41 override fun onResponse(call: Call<RepoSearchResponse>, response: Response<RepoSearchResponse>) { 42 val repos = response.body()?.items.orEmpty() 43 recyclerView.adapter = RepoAdapter(repos) { repos -> 44 val intent = Intent(this@MainActivity, DetailActivity::class.java) 45 intent.putExtra("url", repos) 46 startActivity(intent) 47 } 48 49 recyclerView.layoutManager = LinearLayoutManager(this@MainActivity) 50 } 51 52 override fun onFailure(call: Call<RepoSearchResponse>, t: Throwable) { 53 Toast.makeText(this@MainActivity, "Error: ${t.message}", Toast.LENGTH_SHORT).show() 54 } 55 }) 56 } 57 } 58} 59 60class DetailActivity : AppCompatActivity() { 61 override fun onCreate(savedInstanceState: Bundle?) { 62 super.onCreate(savedInstanceState) 63 setContentView(R.layout.activity_detail) 64 65 val url = intent.getStringExtra("url") 66 webView.loadUrl(url) 67 } 68}

RepoAdapter

1package com.example.yourprojectname 2 3import android.view.LayoutInflater 4import android.view.View 5import android.view.ViewGroup 6import android.widget.TextView 7import androidx.paging.PagingDataAdapter 8import androidx.recyclerview.widget.DiffUtil 9import androidx.recyclerview.widget.RecyclerView 10import com.example.github.R 11 12class RepoAdapter(private val repos: List<Repo>) : PagingDataAdapter<Repo, RepoAdapter.RepoViewHolder>(DIFF_CALLBACK) { 13 14 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RepoViewHolder { 15 val view = LayoutInflater.from(parent.context).inflate(R.layout.repo_item, parent, false) 16 return RepoViewHolder(view) 17 } 18 19 override fun onBindViewHolder(holder: RepoViewHolder, position: Int) { 20 val repo = getItem(position) 21 if (repo != null) { 22 holder.nameTextView.text = repo.name 23 holder.descriptionTextView.text = repo.description 24 } 25 } 26 27 class RepoViewHolder(view: View) : RecyclerView.ViewHolder(view) { 28 val nameTextView: TextView = view.findViewById(R.id.repo_name) 29 val descriptionTextView: TextView = view.findViewById(R.id.repo_description) 30 } 31 32 companion object { 33 val DIFF_CALLBACK = object : DiffUtil.ItemCallback<Repo>() { 34 override fun areItemsTheSame(oldItem: Repo, newItem: Repo): Boolean { 35 return oldItem.id == newItem.id 36 } 37 38 override fun areContentsTheSame(oldItem: Repo, newItem: Repo): Boolean { 39 return oldItem == newItem 40 } 41 } 42 } 43}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

コンストラクタに受け取る引数を設定していないことが原因だとわかりましたが記述する内容が分かりませんでした。

補足

特になし

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

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

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

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

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

jimbe

2024/05/17 10:03

MainActivity は kotlin で書いて、アダプタは java で書いているんですか? アダプタも kotlin で書いたほうが良いのでは。
soruto

2024/05/17 11:28

ありがとうございます。kotlinに変更しました。
guest

回答1

0

ベストアンサー

パッと見だけですが、 repos が URL ならこんなでしょうか。

java

1 public RepoAdapter(List<URL> repos, Consumer<URL> consumer) {

あ、 java.util.function.Consumer を import してください。


kotlin

1class RepoAdapter(private val repos: List<Repo>, private val consumer: (URL) -> Unit)

投稿2024/05/17 10:54

編集2024/05/17 11:44
jimbe

総合スコア13209

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

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

soruto

2024/05/17 11:38

頂いたアドバイスをもとに class RepoAdapter(repos: List<URL>, private val onRepoClick: (URL) -> Unit) : PagingDataAdapter<Repo, RepoAdapter.RepoViewHolder>(DIFF_CALLBACK) { に変更しました。
jimbe

2024/05/17 11:41

回答の編集と入違っちゃいましたが、その変更で如何なったでしょうか。
soruto

2024/05/17 11:55

引数に関しては問題なく渡せるようになりました。回答ありがとうございました。重ねて質問なのですがメインアクティビティの66行目で使用しているwebViewでUnresolved reference: webViewが表示されています。宣言するのであればどのように記述したらよいのでしょうか?一例でも教えていただけたら幸いです。
soruto

2024/05/17 12:14

申し訳ありません、val webView: WebView = findViewById(R.id.webView)が抜けているだけでした。この度はご回答ありがとうございました。
jimbe

2024/05/17 13:07

お疲れさまでした^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問