Eu tenho um layout que eu tenho que incluir várias vezes. Consiste em um TextView
e um ImageView
:
<ImageView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:background="@drawable/back2"
android:id="@+id/id_1"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/id_2"
android:textSize="15dp"
android:typeface="sans"
android:textColor="#ffffff" />
Agora eu quero definir o texto de forma programática, mas o problema que eu estou enfrentando é que o TextView
agora sempre tem o mesmo Id, porque eu estou incluindo o mesmo Layout várias vezes. Existe uma maneira de incluir programaticamente um Layout e sempre alterar o Id para cada layout incluído?
Respostas:
4 para resposta № 1O que eu faço é, quando você precisa acessar as visualizações em uma instância específica do layout incluído:
ViewGroup instance = (ViewGroup) findViewById(R.id.included1); // Replace ViewGroup with whatever your particlar type is
ImageView iView = (ImageView) instance.findViewById(R.id.id_1);
TextView tView = (TextView) instance.findViewById(R.id.id_2);
2 para resposta № 2
Você pode criar seu TextView dinamicamente e depois usar TextView.setId(int id)
para definir o id dessa View para que você possa chamá-lo mais tarde com o novo id.
1 para resposta № 3
Para cada visão de texto
Mude o id na linha android:id="@+id/id_2"
para um id diferente.
Por exemplo:
android:id="@+id/id_4"
Para adicioná-los programaticamente, você pode fazer isso:
TextView Label3 = new TextView(this);
Label3.setId(300);
Label3.setTextAppearance(this, android.R.attr.textAppearanceMedium);
Label3.setLayoutParams(labelParams);
Label3.setText("My textViewCaption:");
ll3.addView(Label3);
e se você definir Label3 como uma variável global, poderá acessá-lo para alterá-lo, via setText
Programaticamente, você pode percorrer isso e definir os IDs enquanto faz um loop
1 para resposta № 4
Você pode usar isso para alterar seu ID TextView
TextView textview = new TextView(this);
textview.setId(int id);
0 para a resposta № 5
Tanto quanto sei, não há como fazer isso. Você terá que criar o layout sem usar <include>
se você quiser que os IDs em seu layout XML sejam exclusivos.