Layoutinflater mono per Android
-
13-11-2019 - |
Domanda
Voglio creare programmaticamente il mio relativaLayout usando layouinflater ma lancia un errore sul metodo addview, è il mio codice:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeAgedSummary"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
ViewGroup relativeAgedSummary=FindViewById<ViewGroup>(Resource.Id.relativeAgedSummary);
View view = this.LayoutInflater.Inflate(
Resource.Layout.aged_summary_list_item,
relativeAgedSummary, false);
for (int i = 0; i < agedValues.Count; i++) {
var row = agedValues.ElementAt(i);
if(row.Range == 0 && row.IsTotal == false)
{
RelativeLayout rl = view.FindViewById<RelativeLayout>(
Resource.Id.relativeLayoutAgedSummaryItem);
rl.SetBackgroundResource(Resource.Color.lightBlue);
if(contA==0)
{
TextView tv = (TextView)view.FindViewById(Resource.Id.txtAgedSummary);
tv.SetText(labelsAgedSummary[row.Range], TextView.BufferType.Normal);
contA++;
}
relativeAgedSummary.AddView(view);
}
Soluzione
Cosa intendi dire "appare solo uno". Se stai cercando di aggiungere più istanze a relativeAgedSummary
allora dovrai nuovamente influire il aged_summary_list_item
ogni volta:
for (int i = 0; i < agedValues.Count; i++)
{
View view = this.LayoutInflater.Inflate(
Resource.Layout.aged_summary_list_item,
relativeAgedSummary, false);
var row = agedValues.ElementAt(i);
// the logic here...
relativeAgedSummary.AddView(view);
}
Questo perché stai cercando di aggiungere lo stesso oggetto più di una volta. Ignorerà l'aggiunta. E poi nel ciclo si modifica ripetutamente lo stesso elemento, con conseguente assomigliare ad esso aggiunto solo l'articolo "ultimo".
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow