Ho qualche problema riguardante il gonfiaggio e il riutilizzo dello stesso TextView.
È come se cercasse di sovrascrivere la stessa textview più e più volte o qualcosa del genere e non può farlo?Usa visualizzazione per gonfiare più volte
LayoutInflater inflater = LayoutInflater.from(this);
View mainlayout = inflater.inflate(R.layout.days_monday_inflate, null);
View layout_number = inflater.inflate(R.layout.inflate_number, null);
for (int i = 0; i < 10; i++) {
row = new TableRow(this);
number = (TextView) layout_number.findViewById(R.id.Number);
number.setTag(i);
number.setText(Integer.toString(i));
row.addView(number);
}
setContentView(mainlayout);
Ecco l'inflate_number.xml
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Number"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center|bottom"
android:text="1" />
Questo è l'im errore di ottenere e la sua nel braccio: 51, che è: row.addView(number);
07-18 20:54:25.124: E/AndroidRuntime(1166): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.view.ViewGroup.addViewInner(ViewGroup.java:1970) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.view.ViewGroup.addView(ViewGroup.java:1865) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.view.ViewGroup.addView(ViewGroup.java:1822) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.view.ViewGroup.addView(ViewGroup.java:1802) 07-18 20:54:25.124: E/AndroidRuntime(1166): at com.trainingschedule.days.Monday.onCreate(Monday.java:50) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
Grazie mille! Sono stato seduto con questo per circa 2 ore ora, abit noobish. Ma ora posso continuare a sviluppare la mia applicazione, fantastico !! – JussT
Una cosa da notare è che devi passare quel valore nullo quando si gonfia, perché se provi ad associarlo a un gruppo di visualizzazione, lì inflate() restituirà il gruppo di viste e il tuo findViewById restituirà comunque la prima istanza dell'ID non il nuovo. – MikeHelland
@mikethematrix In realtà, ora realizzo il passaggio di null è l'approccio sbagliato.Dovresti in effetti passare il layout genitore, ma anche passare in 'false' come ultimo parametro per impedire di collegarlo immediatamente al layout (permettendoti di ottenere un riferimento ad esso). Ho aggiornato la risposta. – kcoppock