2016-04-21 28 views
-1

Ich verwende einen Array-Adapter, um eine Listview von Benutzereingaben zu füllen. Der Array-Adapter funktioniert jedoch nicht und stürzt die App ab. Ich weiß nicht, warum es das tut und ich würde mich freuen, wenn irgendjemand es erklären könnte. Unten ist meine Klasse und der Fehler, den ich bekomme.Array-Adapter funktioniert nicht korrekt

meine Klasse

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(); 

      } 
     }); 


    } 
} 

Fehler Fehler: (62, 53) Fehler: kann nicht Typargumente für ArrayAdapter <>

Antwort

0

Da nur this verwendet wird, bezieht sich auf View.OnClickListener Klasse nicht activity Klasse. Und ArrayAdapter<> erfordert context als erstes Argument, das hier von activity und nicht View.OnClickListener bereitgestellt werden kann.

So versuchen, wie folgt aus:

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

ändern

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

zu

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

Sie müssen den Kontext übergeben. Da dies in einer Schließung ist, müssen Sie explizit getActivity() als this werden Sie nicht den Kontext bekommen.

Verwandte Themen