A nie lepiej skorzystać z List<Blok> lub Set<Blok> ?
Ps. Pokaż kod pętli która iteruje po tablicy
Nie mam pętli. onClick elementu ListView bezpośrednio odnosi się do konkretnego zasobu w tablicy, który następnie jest wczytywany do TextView w nowej aktywności.
Trochę inny kod ale ten sam problem
Klasa MainActivity
package pl.nynacode.lernfoecalculator;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Obiekt nasłuchujący onItemClickListener
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View itemView, int position, long id) {
Intent intent = new Intent(MainActivity.this,Poziomy.class);
if(position == 0) {intent.putExtra(Poziomy.EXTRA_GREAD_BUILDING, (int) id);}
if(position == 1) {intent.putExtra(Poziomy.EXTRA_GREAD_BUILDING, (int) id);}
startActivity(intent);
}
};
// Obiekt nasłuchujący do widoku listy
ListView listView = (ListView) findViewById(R.id.lista_perel);
listView.setOnItemClickListener(itemClickListener);
}
}
Klasa Poziomy
package pl.nynacode.lernfoecalculator;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Poziomy extends AppCompatActivity {
public static final String EXTRA_GREAD_BUILDING = "gbID";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_poziomy);
// Pobranie wybranej perły
int gbID = (Integer) getIntent().getExtras().get(EXTRA_GREAD_BUILDING);
Perly perly = Perly.perla[gbID];
if(gbID == 0) {
final int choiceBuilding = 0;
ArrayAdapter<Arka> listAdapter = new ArrayAdapter<>(
this, android.R.layout.simple_list_item_1, Arka.poziomy);
ListView listaPerel = (ListView) findViewById(R.id.level_list);
listaPerel.setAdapter(listAdapter);
// Obiekt nasłuchujący
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listaPerel, View view, int position, long id) {
Intent intent = new Intent(Poziomy.this, OpisPoziomu.class);
intent.putExtra(OpisPoziomu.EXTRA_LEVELID, (int) id);
intent.putExtra(OpisPoziomu.EXTRA_CHOISE_BUILDING, (int) choiceBuilding);
startActivity(intent);
}
};
listaPerel.setOnItemClickListener(itemClickListener);
}
if(gbID == 1) {
final int choiceBuilding = 1;
ArrayAdapter<PrzyladekCanaveral> listAdapter = new ArrayAdapter<>(
this, android.R.layout.simple_list_item_1, PrzyladekCanaveral.poziomy);
ListView listaPerel = (ListView) findViewById(R.id.level_list);
listaPerel.setAdapter(listAdapter);
// Obiekt nasłuchujący
AdapterView.OnItemClickListener itemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listaPerel, View view, int position, long id) {
Intent intent = new Intent(Poziomy.this, OpisPoziomu.class);
intent.putExtra(OpisPoziomu.EXTRA_LEVELID, (int) id);
intent.putExtra(OpisPoziomu.EXTRA_CHOISE_BUILDING, (int) choiceBuilding);
startActivity(intent);
}
};
listaPerel.setOnItemClickListener(itemClickListener);
}
}
}
Klasa OpisPoziomu
package pl.nynacode.lernfoecalculator;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class OpisPoziomu extends AppCompatActivity {
public static final String EXTRA_LEVELID = "levelID";
public static final String EXTRA_CHOISE_BUILDING = "choiceBuilding";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_opis_poziomu);
// Pobranie wybranej perły
int x = (Integer) getIntent().getExtras().get(EXTRA_CHOISE_BUILDING);
Perly perly = Perly.perla[x];
// Pobranie wywranego poziomu perły
int levelID = (Integer) getIntent().getExtras().get(EXTRA_LEVELID);
Arka arka = Arka.poziomy[levelID];
PrzyladekCanaveral pc = PrzyladekCanaveral.poziomy[levelID];
// Pobranie referencji do widoków textViev
TextView level = (TextView) findViewById(R.id.level);
TextView lv1 = (TextView) findViewById(R.id.lv1);
TextView lv2 = (TextView) findViewById(R.id.lv2);
TextView lv3 = (TextView) findViewById(R.id.lv3);
TextView lv4 = (TextView) findViewById(R.id.lv4);
TextView lv5 = (TextView) findViewById(R.id.lv5);
// Wyświetlenie w zależności od wyboru rodzaju perły
if(x == 0) {
//Wczytujemy poziom perly
level.setText(arka.getLevel());
// Wczytujemy wkłady 1,9
lv1.setText(arka.getLv1());
lv2.setText(arka.getLv2());
lv3.setText(arka.getLv3());
lv4.setText(arka.getLv4());
lv5.setText(arka.getLv5());
}
if(x == 1) {
//Wczytujemy poziom perly
level.setText(pc.getLevel());
// Wczytujemy wkłady 1,9
lv1.setText(pc.getLv1());
lv2.setText(pc.getLv2());
lv3.setText(pc.getLv3());
lv4.setText(pc.getLv4());
lv5.setText(pc.getLv5());
}
}
}
Klasa z niedziałającą tablicą
package pl.nynacode.lernfoecalculator;
public class Arka {
private String level;
private String lv1;
private String lv2;
private String lv3;
private String lv4;
private String lv5;
// tablica
public static final Arka[] poziomy = {
new Arka("Level 1", "19", "10", "0", "0", "0"),
new Arka("Level 2", "29", "19", "10", "0", "0"),
new Arka("Level 3", "48", "29", "10", "0", "0"),
new Arka("Level 4", "67", "68", "10", "0", "0"),
new Arka("Level 5", "86", "48", "19", "0", "0"),
new Arka("Level 6", "114", "57", "19", "10", "0"),
new Arka("Level 7", "133", "67", "19", "10", "0"),
new Arka("Level 08", "162", "86", "29", "10", "0"),
new Arka("Level 09", "181", "95", "29", "10", "0"),
new Arka("Level 10", "209", "105", "38", "10", "0"),
new Arka("Level 11", "228", "114", "38", "10", "0"),
new Arka("Level 12", "257", "133", "48", "10", "0"),
new Arka("Level 13", "285", "143", "48", "10", "0"),
new Arka("Level 14", "314", "162", "57", "19", "0"),
new Arka("Level 15", "342", "171", "57", "19", "0"),
new Arka("Level 16", "371", "190", "67", "19", "0"),
new Arka("Level 17", "399", "200", "67", "19", "0"),
new Arka("Level 18", "428", "219", "76", "19", "0"),
new Arka("Level 19", "456", "228", "76", "19", "0"),
new Arka("Level 20", "485", "247", "86", "19", "0")
};
// Konstruktor klasy
private Arka(String level, String lv1, String lv2, String lv3, String lv4, String lv5) {
this.level = level;
this.lv1 = lv1;
this.lv2 = lv2;
this.lv3 = lv3;
this.lv4 = lv4;
this.lv5 = lv5;
}
// metody poierające informacje z prywatnych zmiennych
public String getLevel() {
return level;
}
public String getLv1() {
return lv1;
}
public String getLv2() {
return lv2;
}
public String getLv3() {
return lv3;
}
public String getLv4() {
return lv4;
}
public String getLv5() {
return lv5;
}
public String toString() {
return this.level;
}
}
Pliki layoutów też mam podać ???? Nie chciałem wklejać całego kodu aplikacji z uwagi na to, że wzbudza to agresje u osób, które umieją już programować i zawsze naczytam się komentarzy, że jestem mało ambitny. Ale jeśli chcesz i dzięki temu pomożesz mi rozwiązać problem a ja posiądę dodatkową umiejętność to bardzo proszę kod app i dzięki za pomoc z góry. Nadmienię że jest to kod próbny, na którym ćwiczę różnego rozwiązania. Jak rozwiążę już wszystkie swoje problem i wymyślę w 100% co i jak ma działać w apce to wtedy zacznę na nowo pisać już czysty i bardziej przejrzysty kod.