/ / Android - Ids diferentes para o mesmo incluem Layout - android

Android - Ids diferentes para o mesmo incluem Layout - android

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 № 1

O 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.