Pierwsza rzecz. Najpierw deklarujesz zmienne:
// i to jest ok
EditText ilo;
EditText ko;
TextView dystans;
TextView wypiszDystans;
TextView koszt;
TextView suma;
Potem je znowu deklarujesz i inicjujesz a następnie znowu je deklarujesz i inicjujesz.
EditText ilo = findViewById(R.id.Ilosc1);
EditText ko = findViewById(R.id.Koszt1);
TextView dystans = findViewById(R.id.dystans);
TextView wypiszDystans = findViewById(R.id.wypiszDystans);
TextView koszt = findViewById(R.id.koszt);
TextView licz = findViewById(R.id.textView7);
EditText ilo = findViewById(R.id.Ilosc1);
EditText ko = findViewById(R.id.Koszt1);
EditText pole = findViewById(R.id.Km1);
TextView dystans = findViewById(R.id.dystans);
TextView wypiszDystans = findViewById(R.id.wypiszDystans)
Powinieneś to robić tylko raz!
Czyli najpierw to co na samej górze a potem:
// w metodzie OnCreate
ilo = findViewById(R.id.Ilosc1);
ko = findViewById(R.id.Koszt1);
dystans = findViewById(R.id.dystans);
wypiszDystans = findViewById(R.id.wypiszDystans);
koszt = findViewById(R.id.koszt);
licz = findViewById(R.id.textView7);
Co do Twojego warunku to jest on poprawny 😉 Problem jest z tą linią:
Float km1 = Float.valueOf(pole.getText().toString());
Zobacz że ona jest przed sprawdzeniem czy to pole jest puste. Zatem, jeżeli jest puste to rzuca błędem 🙂 Musisz przenieść tą linię do Twojego ostatniego else, tam gdzie robisz obliczenia.
Sumowanie również możesz tam robić. Zaraz po dodaniu elementu do listy:
listaDanych.add(nowyWpis);
// tutaj lecimy z sumowaniem bo wszystko mamy już na liście
Float calyKoszt = 0.0f;
Float calyDystans = 0.0f;
// pętla for
for(Dane danaZListy: listaDanych) {
calyKoszt = calyKoszt + danaZListy.getKoszt();
calyDystans = calyDystans + danaZListy.getKoszt();
}
// po pętli możesz calyKoszt i calyDystans gdzieś wyświetlić