Ich versuche, eine ListView
mit einer ArrayAdapter
, die ich mit Eingabe von einem EditText
füllen füllen. Mein Programm scheint gut zu kompilieren, aber beim Start der App stürzt es sofort ab. Ich vermute, dass es etwas damit zu tun hat, dass ich versuche, meine Listenansicht einzurichten. Ich bin mir nicht sicher, was ich falsch initialisiere, so dass meine App sofort abstürzt. Alle und alle Tipps würden sehr geschätzt werden. Danke im Voraus!Erstellen einer ListView mit ArrayAdapter
Dies ist meine globale Deklarationen für meine ArrayList
und Adapter
.
ArrayList<scoreScreen> savedScores = new ArrayList<>();
ScoreAdapter adapter = new ScoreAdapter(this, savedScores);
ListView listView = (ListView) findViewById(R.id.dispScores);
listView.setAdapter(adapter);
My Adapter Klasse:
private class ScoreAdapter extends ArrayAdapter<scoreScreen> {
private ScoreAdapter(Context context, ArrayList<scoreScreen> scores) {
super(context, 0, scores);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
scoreScreen score1 = getItem(position);
if (convertView == null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_scores, parent, false);
}
TextView holeNum = (TextView) convertView.findViewById(R.id.holeNum);
holeNum.setText(score1.hole);
return convertView;
}
}
Mein ListView
Innenseite meiner onCreate
Methode.
ListView listview = (ListView) findViewById(R.id.listView1);
listview.setAdapter(adapter);
ich mein Problem gehe davon ist nicht in meinen EditText
Eingängen, da sie innerhalb einer OnClickListener
Methode ist, aber nur für den Fall habe ich es unten angebracht.
public View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText input1 = (EditText) findViewById(R.id.scorePrompt);
TextView output1 = (TextView) findViewById(R.id.textTotal);
String blankCheck = input1.getText().toString(); //CHANGE INPUT IN scorePrompt TO STRING
switch (view.getId()) {
case R.id.buttTotal:
if (blankCheck.equals("")) {
Toast blankError = Toast.makeText(getApplicationContext(), "YOU CANT SKIP HOLES JERK", Toast.LENGTH_LONG);
blankError.show();
break;
} else {
int num1 = Integer.parseInt(input1.getText().toString()); //Get input from text box
int sum = num1 + score2;
score2 = sum;
output1.setText("Your score is : " + Integer.toString(sum));
//savedScores.add(input1.getText().toString());
scoreScreen addScore = new scoreScreen("Score is" + num1);
adapter.add(addScore);
j++;
input1.setText(""); //Clear input text box
break;
}
case R.id.allScores: //CHANGE THIS TO AN EDIT BUTTON, ADD A HOLE NUMBER COUNTER AT TOP OF SCREEN!!!!!
output1.setText("you messed up");
break;
case R.id.editScore: //Need to set up Save Array before we can edit
//CURRENTLY ONLY DISPLAYS THE LAST NUNMBER IN THE TEXTEDIT, NEED TO SET UP LISTVIEW!!!!!!
for (int i=0; i < j; i++){
// output1.setText(savedScores.get(i));
} break;
}
}
};
onCreate
Verfahren wie gewünscht hinzugefügt:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*Button scoresAct = (Button) findViewById(R.id.allScores); //THIS IS TO GO TO ALL SCORES ACTIVITY
scoresAct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent scoreScreen = new Intent(MainActivity.this, AllScoresAct.class);
startActivity(scoreScreen);
}
});*/
Button sumScores = (Button) findViewById(R.id.buttTotal);
Button saveScores = (Button) findViewById(R.id.allScores);
Button changeScores = (Button) findViewById(R.id.editScore);
sumScores.setOnClickListener(onClickListener);
saveScores.setOnClickListener(onClickListener);
changeScores.setOnClickListener(onClickListener);
ListView listview = (ListView) findViewById(R.id.listView1);
listview.setAdapter(adapter);
}
Nach meinem Adapter und Arraylist in meinem onCreate
bewegen, bekomme ich einen neuen Fehler. Ich habe etwas über Nullzeiger geforscht, aber ich habe beide bereits initialisiert. Unten ist mein Logcat, irgendwelche Ideen? Danke
setzen Sie Ihren Stacktrace hier mit den Fehlern –
Was ist bei 'MainActivity.java' Zeile 21? Sie können keinen 'neuen ScoreAdapter' außerhalb der onCreate-Methode erstellen –
Das liegt daran, dass mein Adapter außerhalb von 'onCreate' deklariert wurde. Ich habe es seitdem verschoben, aber jetzt bekomme ich einen Nullzeigerfehler, aber ich bin nicht sicher warum, weil ich glaube, dass ich alles andere richtig initialisiert habe. –