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

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

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

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

Android Studio

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

Q&A

解決済

1回答

811閲覧

無名クラスを原始的なクラスの方法がうまくいかない

eisaku123

総合スコア74

Java

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

Android Studio

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

1グッド

1クリップ

投稿2018/02/13 14:15

こんにちわ、

無名クラスの表記だと素人だとわかりづらいので、原始的なクラスにして理解を深めようとしましたが
ビルドがうまくいきません。アドバイスお願いします。

エラー: 不適合な型: MainActivity.MyListenerをOnItemClickListenerに変換できません:
エラー: MainActivity.MyListenerはabstractでなく、OnClickListener内のabstractメソッドonClick(View)をオーバーライドしません

Java

1public class MainActivity extends AppCompatActivity { 2 3 ArrayAdapter<String> adapter; 4 5@Override 6 protected void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.activity_main); 9 10 final ArrayList<String> data = new ArrayList<>(); 11 data.add("胡椒"); 12 data.add("ターメリック"); 13 data.add("コリアンダー"); 14 data.add("生姜"); 15 data.add("ニンニク"); 16 data.add("サフラン"); 17 18 adapter = new ArrayAdapter<>( 19 this, android.R.layout.simple_list_item_1, data); 20 ListView list = (ListView) findViewById(R.id.list); 21 list.setAdapter(adapter); 22 23 ////////ここ無名クラスを///start//////////////////////////// 24 list.setOnItemClickListener( 25 new AdapterView.OnItemClickListener() { 26 public void onItemClick(AdapterView<?> av, 27 View view, int position, long id) { 28 adapter.remove((String) ((TextView) view).getText()); 29 // adapter.add("ナツメグ"); 30 31 } 32 } 33 ); 34 //////////////////////end//////////////////////////// 35 } 36}

Java

1 2/*原始的なクラスにしたがうまくいかない*/ 3 4public class MainActivity extends AppCompatActivity { 5 6 ArrayAdapter<String> adapter; 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.activity_main); 12 13 final ArrayList<String> data = new ArrayList<>(); 14 data.add("胡椒"); 15 data.add("ターメリック"); 16 data.add("コリアンダー"); 17 data.add("生姜"); 18 data.add("ニンニク"); 19 data.add("サフラン"); 20 21 adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); 22 ListView list = (ListView) findViewById(R.id.list); 23 list.setAdapter(adapter); 24 25 list.setOnItemClickListener(new MyListener()); 26 27 } 28 29 /////原始的なクラスに変換/////////start/////////////////////// 30 class MyListener implements AdapterView.OnClickListener{ 31 32 public void onItemClick(AdapterView<?> av, View view, int position, long id) { 33 34 adapter.remove((String) ((TextView) view).getText()); 35 // adapter.add("ナツメグ"); 36 37 } 38 } 39 //////////////////////////////end/////////////////////////////// 40 41} 42
KOGUMA👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

implementsするのを間違えていませんか?AdapterView.OnClickListenerではなくAdapterView.OnItemClickListenerではないでしょうか。


(BA後の余談)
本件のような「匿名クラス(無名クラス)を内部クラスに変えたい」というときには、匿名クラスの範囲内にカーソルを置いて、メニューバーから "Refactor" → "Convert Anonymous to Inner..." と選べば、内部クラス名を設定するダイアログを経て一発変換してくれる機能があります。これも試してみるといいのではないかと思います(本件のような間違いをせずに済みますし)。

投稿2018/02/13 14:37

編集2018/02/13 22:23
keicha_hrs

総合スコア6768

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

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

eisaku123

2018/02/13 14:41

あ ここ間違ってました。ありがとうございます助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問