2016-04-21 14 views
-1

ユーザが入力したリストビューに配列アダプタを使用しています。しかし、配列アダプターは動作せず、アプリケーションがクラッシュします。私はなぜこれを行うのではありませんし、なぜ誰かが説明できるのであれば、私は感謝します。以下は私のクラスと私が得るエラーです。アレイアダプタが機能していません正しく

私のクラス

import android.content.Intent; 
import android.os.Bundle; 
import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 

public class AddScore extends AppCompatActivity { 
    private ListView lv; 
    private EditText player; 
    private EditText description; 
    private EditText winner; 
    private EditText game; 
    private Button btn3; 
    private String TAG = "Hannah"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_score); 
     // MySQLiteHelper db = new MySQLiteHelper(this); 
     lv = (ListView) findViewById(R.id.lv); 
     player = (EditText) findViewById(R.id.player); 
     description = (EditText) findViewById(R.id.description); 
     winner = (EditText) findViewById(R.id.winner); 
     game = (EditText) findViewById(R.id.game); 
     btn3 = (Button) findViewById(R.id.button3); 


     btn3.setOnClickListener(new View.OnClickListener() { 

      @Override 

      public void onClick(View view) { 
       List<String> sLog = new ArrayList<>(); 
       MySQLiteHelper Helper = new MySQLiteHelper(view.getContext()); 
       List sLogs = Helper.getAllScores(); 
       sLog.add(player.getText().toString().trim()); 
       sLog.add(description.getText().toString().trim()); 
       sLog.add(winner.getText().toString().trim()); 
       sLog.add(game.getText().toString().trim()); 


       for (int i = 0; i < sLog.size(); i++) { 
        Score score = new Score(); 
        sLog.add(score.toString()); 
       } 

       //ListView listView = (ListView) findViewById(R.id.lv); 
       ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, sLog); 
       Log.d(TAG, "**************************"); 
       lv.setAdapter(arrayAdapter); 
       Score score = new Score(); 
       arrayAdapter.add(String.valueOf(score)); 

       Toast.makeText(AddScore.this, "Button Clicked", Toast.LENGTH_SHORT).show(); 

      } 
     }); 


    } 
} 

エラー エラー:(62、53)エラー:ArrayAdapter <のための型引数を推論することはできません>

答えて

0

thisは、View.OnClickListenerクラスではなく、activityクラスです。そして、ArrayAdapter<>は、がactivityであり、View.OnClickListenerではなく、ここで提供できる第1引数として必要です。

ので、このようにしてみてください:

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(AddScore.this, android.R.layout.simple_list_item_1, sLog); 
Log.d(TAG, "**************************"); 
lv.setAdapter(arrayAdapter); 
1

変更

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, sLog); 

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, sLog); 

コンテキストを渡す必要があります。これはクロージャの内側にあるので、明示的にgetActivity()にする必要があります。thisはコンテキストを取得しません。

関連する問題