2017-02-03 1 views
-3

ich meine erste Android App nur versuchen, und haben ein Problem festgestellt, wo ich wirklich nicht weiterkommen. In meiner App erstelle ich eine ArrayList, die mit Objekten gefüllt wird. Jedes Objekt hat vier Attribute. Jetzt möchte ich jedes Attribut für jedes Objekt in seinem eigenen spezifischen TextView schreiben. Aber da ist mein Problem. Wenn der gleiche Code in einer normalen Java-Anwendung ausgeführt wird und ich System.out.Print("getter method") verwende, bekomme ich den Wert, den ich gerne hätte, aber wenn ich .setText("getter method") verwende bekomme ich was man auf dem Screenshot sehen kann.Android Textview setText mit Getter zurückgeben

ActivityClass:

public class ShowBeaconActivity extends Activity { 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_showbeacons); 
    setUpShowBeacons(); 
} 

public void setUpShowBeacons(){ 
    // 
    //Beacon 1 
    // 
    TextView beaconOneUUID = (TextView)findViewById(R.id.txtBeaconOneUUIDValue); 
    beaconOneUUID.setText(BeaconListe.getBeacon(0,"UUID")); 

    TextView beaconOneMajor = (TextView)findViewById(R.id.txtBeaconOneMajorValue); 
    beaconOneMajor.setText(BeaconListe.getBeacon(0,"Major")); 

    TextView beaconOneMinor = (TextView)findViewById(R.id.txtBeaconOneMinorValue); 
    beaconOneMinor.setText(BeaconListe.getBeacon(0,"Minor")); 

    TextView beaconOneRSSI = (TextView)findViewById(R.id.txtBeaconOneRSSIValue); 
    beaconOneRSSI.setText(BeaconListe.getBeacon(0,"RSSI")); 
    // 
    //Beacon 2 
    // 
    TextView beaconTwoUUID = (TextView)findViewById(R.id.txtBeaconTwoUUIDValue); 
    beaconTwoUUID.setText(BeaconListe.getBeacon(1,"UUID")); 
    ... 
} 

}

BeaconClass:

public class Beacon { 
private String UUID; 
private String Major; 
private String Minor; 
private int RSSI; 

public Beacon(String UUID, String Major,String Minor, int RSSI){ 
    this.UUID = UUID; 
    this.Major = Major; 
    this.Minor = Minor; 
    this.RSSI = RSSI; 
} 
// 
//Getter 
// 
public String getUUID(){ 
    return UUID; 
} 

public String getMajor(){ 
    return Major; 
} 

public String getMinor() { 
    return Minor; 
} 

public int getRSSI() { 
    return RSSI; 
} 
// 
//Setter 
// 
public void setRSSI(int RSSI){ 
    this.RSSI = RSSI; 
} 

}

BeaconListeClass

public class BeaconListe { 
private static ArrayList<Beacon>Liste = new ArrayList<Beacon>(); 
// 
//Getter 
// 
public static String getBeacon(int index, String value){ 
    String result = ""; 
    switch(value){ 
     case "UUID": result = Liste.get(index).getUUID(); 
      break; 
     case "Major": result = Liste.get(index).getMajor(); 
      break; 
     case "Minor": result = Liste.get(index).getMinor(); 
      break; 
     case "RSSI": int resultTemp = Liste.get(index).getRSSI(); 
      result = String.valueOf(resultTemp); 
      break; 
    } 
    return result; 
} 
// 
//Setter 
// 
public static void addBeacon(String UUID, String Major, String Minor, int RSSI){ 
    Liste.add(new Beacon(UUID, Major, Minor, RSSI)); 
} 

} App Screenshot

Antwort

0

es wegen der Nullwert abstürzen kann;

public static String getBeacon(int index, String value) 
    { 
     String result = ""; 
     switch(value){ 
      Beacon becon = Liste.get(index); 
      case "UUID":  
       result = becon!=null?becon.getUUID():""; 
       break; 
      case "Major": 
       result = becon!=null?becon.getMajor():""; 
       break; 
      case "Minor": 
       result = becon!=null?becon.getMinor():""; 
       break; 
      case "RSSI": 
       resultTemp = becon!=null?becon.getRSSI():0; 
       result = String.valueOf(resultTemp); 
       break; 
     } 
     return result==null?"":result; 
    } 
0

versuchen diese

TextView beaconOneUUID = (TextView)findViewById(R.id.txtBeaconOneUUIDValue); 
if(BeaconListe.getBeacon(0,"UUID") != null){ 
beaconOneUUID.setText(BeaconListe.getBeacon(0,"UUID")); 
} 

    TextView beaconOneMajor = (TextView)findViewById(R.id.txtBeaconOneMajorValue); 
if(BeaconListe.getBeacon(0,"Major") != null){ 
beaconOneMajor.setText(BeaconListe.getBeacon(0,"Major")); 
} 

    TextView beaconOneMinor = (TextView)findViewById(R.id.txtBeaconOneMinorValue); 
if(BeaconListe.getBeacon(0,"Minor") != null){ 
beaconOneMinor.setText(BeaconListe.getBeacon(0,"Minor")); 
} 
    TextView beaconOneRSSI = (TextView)findViewById(R.id.txtBeaconOneRSSIValue); 
if(BeaconListe.getBeacon(0,"RSSI") != null){ 
beaconOneRSSI.setText(BeaconListe.getBeacon(0,"RSSI")); 
} 
    // 
    //Beacon 2 
    // 
    TextView beaconTwoUUID = (TextView)findViewById(R.id.txtBeaconTwoUUIDValue); 
if(BeaconListe.getBeacon(1,"UUID")){ 
beaconTwoUUID.setText(BeaconListe.getBeacon(1,"UUID")); 
} 
+0

Dank für Ihre Antwort danken, aber es hilft nicht. Und ich weiß nicht, warum es hätte helfen sollen. Vielleicht hätte ich das erwähnen sollen. Wenn ich auf den Button "Show Beacons" klicke, öffnet sich diese Aktivität und wenn ich nicht mindestens 4 Beacons (es ist auch das Limit) zu meiner Liste hinzugefügt habe. Also, wenn dieses Fenster erscheint, bin ich ziemlich sicher, dass es in meiner Liste einen Wert für jedes TextView gibt :) – Tobias

0

Von was ich sehe, die .setText("getter methods") funktionieren gut. Das Problem ist der Text, den er setzt. Überprüfen Sie Ihre Funktion, in der Sie die BeaconListe eintragen, die Sie hier nicht gezeigt haben. Ich habe versucht, den Code aber mit den folgenden

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_showbeacons); 
    populateBeaconListe(); 
    setUpShowBeacons(); 
} 
public void populateBeaconListe(){ 
    BeaconListe.addBeacon("B1UUID","B1MAJOR","B1MINOR",1111); 
    BeaconListe.addBeacon("B2UUID","B2MAJOR","B2MINOR",2222); 
    BeaconListe.addBeacon("B3UUID","B3MAJOR","B3MINOR",3333); 
    BeaconListe.addBeacon("B4UUID","B4MAJOR","B4MINOR",4444); 
} 

und es funktioniert gut. Screenshot screenshots

+0

Danke, dass Sie mich in die richtige Richtung weisen :). Ich dachte nicht einmal daran, dass meine Addbeacon-Methode falsch sein könnte. Alles, was ich chancete, war "String uuid = String.valueOf ((TextView) findViewById (R.id.txtUUID))" zu String "uuid = ((TextView) findViewById (R.id.txtUUID)). GetText(). ToString () "und jetzt funktioniert es gut. – Tobias

Verwandte Themen