W mojej aktywności w systemie Android muszę dynamicznie dodawać pojedynczy widok (w czasie wykonywania) na określonej pozycji w układzie. Dodawany widok jest określany w czasie wykonywania. Na przykład układ może wyglądać mniej więcej tak:Element zastępczy układu Android dla dynamicznie dodawanego widoku
<LinearLayout ...>
<TextView ... />
<!-- Dynamic item to be added here -->
<TextView ... />
</LinearLayout>
Jaki jest najlepszy sposób, aby to osiągnąć?
Jednym z rozwiązań jest użycie layout.addView(view, index)
, ale wolę nie kodować indeksu.
Innym rozwiązaniem jest użycie FrameLayout jako miejsce, a miejsce może dynamiczny widok wewnątrz FrameLayout, na przykład:
<LinearLayout ...>
<TextView ... />
<FrameLayout android:id="@+id/placeholder" />
<TextView ... />
</LinearLayout>
wówczas:
findViewById(R.id.placeholder).addView(view);
Jednak to dodaje niepotrzebne widok w hierarchii.
Jaki byłby zalecany sposób, aby to zrobić?
Dzięki. Skończyło się na użyciu 'findViewById (R.id.placeholder) .addView (view);', gdzie symbol zastępczy może być FrameLayout lub dowolnym innym układem, jeśli widok powinien być dodany na końcu, na przykład ScrollView. – Ralf
możesz uzyskać głębokie drzewo zagnieżdżonych widoków w ten sposób, co może powodować w niektórych przypadkach stuckoverflowerror, ze względu na ograniczony stack dla wątku UI –