Ich habe folgende lineare layour:Ich muss Ansichten von einem für instanziieren und ändern. Ist es möglich, die IDs für das i zu erhalten?
<?xml version="1.0" encoding="utf-8"?>
<View
android:id="@+id/white1"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white2"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white3"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white4"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white5"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white6"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white7"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white8"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white9"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white10"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/white_mic_value"/>
<View
android:id="@+id/white11"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/half_white_mic_value"/>
<View
android:id="@+id/white12"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/half_white_mic_value"/>
<View
android:id="@+id/white13"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/half_white_mic_value"/>
<View
android:id="@+id/white14"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/half_white_mic_value"/>
<View
android:id="@+id/white15"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/half_white_mic_value"/>
<View
android:id="@+id/white16"
android:layout_width="8dp"
android:layout_height="30dp"
android:layout_marginRight="5dp"
android:background="@drawable/half_white_mic_value"/>
und ich möchte, dass sie in eine verwenden, um, so etwas wie:
for(int i= 1 ; i < 17; i++){
if(soundMeter.getAmplitude() > i*viewThreshold) {
rootView.findViewById(R.id.white+).setBackgroundResource(R.drawable.white_mic_value);
}else{
rootView.findViewById(R.id.white+i).setBackgroundResource(R.drawable.half_white_mic_value);
}
}
ich versucht: int id = getResources().getIdentifier("white" + i, "view", getActivity().getPackageName());
aber es stürzt mit dem folgenden Fehler ab:
06-20 09:12:45.011: E/InputEventSender(28432): Exception dispatching finished signal.
06-20 09:12:45.011: E/MessageQueue-JNI(28432): Exception in MessageQueue callback: handleReceiveCallback
06-20 09:12:45.031: E/MessageQueue-JNI(28432): java.lang.NullPointerException
Ich brauche nur ein Mikrofon Amplitude Ansicht, ähnlich wie diese machen: https://s3.amazonaws.com/uploads.hipchat.com/39260/829560 /3tVsu9UkFrDlarJ/upload.png Ich dachte daran, mit der Logik zu gehen, um sie dynamisch zu erstellen, aber ich bevorzuge eine XML, eine feste Anzahl von Elementen, und auch mit Buttermesser, es injiziert sie, so dass es schneller ist. Also habe ich sie einfach in der XML-Datei belassen, und zwar mit einem Array von Ints: D –