2017-01-24 6 views
-1

Ich habe mehrere Objekte in einer Aktivität und ich möchte ihre ID überprüfen, bevor ich irgendwelche Aktionen an ihnen durchführe. Aber ich bin nicht sicher, wie man das macht, habe ich versucht:Objekte anzeigen ID

if (v.getId().contains("empty")){ 

aber das gibt einen Fehler und dann habe ich versucht

if (v.getId() == "[attr^=empty]"){ 

und das ist auch falsch. Um ehrlich zu sein ist mir bewusst, dass beide nicht die richtigen Zuweisungen verwenden und so weiter, aber ich bin wirklich verloren, wie man überprüft, ob eine ID einen bestimmten Teilstring enthält .... Ich würde es begrüßen, wenn jemand helfen könnte

PS: v ist ein View-Objekt

+4

'v.getId()' gibt eine int. Sie können ein 'int' nicht mit einem' string' vergleichen. –

+0

Ja, das habe ich gesehen, aber ich bin verwirrt, wie es funktioniert. Was ich meine ist, wenn Sie ein Objekt zum Beispiel ein ImageView in einer XML-Datei definieren, geben Sie ihm eine ID (zum Beispiel: android: id = "@ id/empty1") und wenn Sie das view-Objekt in der Java/Aktivität verwenden Sie müssen es zuerst als View-Objekt definieren (View emptySpot = findViewById (R.id.empty1)). Wie kann ich also überprüfen, wo eine bestimmte ID beginnt, ohne sie als String zu behandeln? sollte ich string.valueof() anwenden? ... – user7437489

Antwort

0

v.getId() gibt eine ganze Zahl zurück.

switch (v.getId()){ 
    case R.id.ViewElement1: 
      //do something here 
      break; 

    case R.id.ViewElement2: 
      //do something here 
      break; 

    case R.id.ViewElement3: 
      //do something here 
      break; 
} 

Dieser Code macht, ist, dass es wird die Id Ihrer Ansicht dann vergleicht sie über einen Schalter-Gehäuseblock: Um id vor, etwas zu tun zu überprüfen, würde ich so etwas wie empfehlen. Wenn die ID aus v.getId() übernommen wird, wird der Code im Case-Block ausgeführt. Die break; ist wichtig, sonst wird der Code in den Fällen unterhalb der ausgeführten ausgeführt. Sie können dies auch für ein Wenn-sonst tun, wenn das mehr zu Ihrem Stil passt.

Wenn Sie die ID als String abrufen möchten, können Sie versuchen:

String ResourceIdAsString = v.getResources().getResourceName(v.getId()); 

und dann können Sie Ihr tun, wenn Operationen auf dem String-Objekt enthält.

+0

Dies ist, was ich gerade mache, und ich habe einen Standardfall, wo ich die gleiche Aktion auf alle anderen Ansichten mit einer ID anwenden möchte, die mit leer beginnt, aber ich weiß nicht, wie man nur nach einem Teil sucht einer ID oder ist es nicht möglich? – user7437489

+0

@ user7437489 Ich habe meine Antwort aktualisiert. – Razgriz

0

Ich bin mir nicht ganz sicher, was Sie erreichen wollen. Es gibt also einen Überblick darüber, wie id funktioniert.

Zuerst müssen Sie id alle Ihre Ansichten in xml wie:

<TextView 
    android:height="wrap_content" 
    android:weight="match_parent" 
    android:id="@+/myTextView" /> 

dann in Java-Code verwenden, um ein Schaltergehäuse wie:

switch(view.getId()){ 

    case R.id.myTextView1: 

    break; 

} 

Wenn Sie einige Ansichten haben, die gleiche tun Sie können sie wie verwenden:

switch(view.getId()){ 

    case R.id.myTextView1: 
    case R.id.myTextView2: 
    case R.id.myTextView3: 
    case R.id.myTextView4: 
     perfomeSomeAction(); 
    break; 

} 
+0

idk wie deine antwort unterscheidet sich von mir. Sie haben sogar die 'break;' - Anweisungen in Ihrem letzten Codeblock vergessen. – Razgriz

Verwandte Themen