Найти TextView, который был создан программно? - PullRequest
0 голосов
/ 09 февраля 2019

Как я могу найти другую функцию TextView в том же классе?Я буду использовать setText(), serBackgroundColor() .. после создания.

Этот фрагмент кода находится на CreateDesign() и этот функционал calling onCreate():

public class MainActivity extends AppCompatActivity {

private LinearLayout linearLayout;
private TextView textView;

public void CreateDesign(){

   linearLayout = (LinearLayout) findById(R.id.linearLayout);

   for(int i = 1; i <= 5; i++){
        textView = new TextView(this);
        textView.setId(i);
        textView.setText(i + ". TextView");

        linearLayout.addView(textView);
    }
}

Ответы [ 3 ]

0 голосов
/ 09 февраля 2019

Ну, вам не обязательно использовать здесь идентификатор, я покажу вам два способа: 1-

TextView textView = (TextView) linearLayout.findViewById(i);

i - это то, что вы установили до 1 до 5

2-

TextView textView = (TextView) linearLayout.getChildAt(i);

i вот номер установленного элемента означает, что 0 является первым textView, добавленным с использованием метода addView ()

0 голосов
/ 09 февраля 2019

Используйте обычный метод findViewById().Вы даете TextViews уникальные идентификаторы от 1 до 5, поэтому вы можете найти эти TextViews, предоставив от 1-5 до findViewById().

Однако вам, вероятно, не следует делать это таким образом, и выне должно иметь глобальной переменной textView (она будет содержать только ссылку на последний созданный TextView).

Вместо этого попробуйте использовать ArrayList и добавить в него все ваши TextViews.Тогда вам не нужно будет выдавать им удостоверения личности, которые не соответствуют стандартам.

public class MainActivity extends AppCompatActivity {

    private LinearLayout linearLayout;
    private ArrayList<TextView> textViews = new ArrayList<>();

    public void CreateDesign(){

        linearLayout = (LinearLayout) findById(R.id.linearLayout);

        for(int i = 1; i <= 5; i++) {
            TextView textView = new TextView(this);
            textView.setText(i + ". TextView");

            linearLayout.addView(textView);
            textViews.add(textView); //add it to the ArrayList
        }
    }
}

0 голосов
/ 09 февраля 2019

Либо вы создаете переменную-член этого TextView, которую затем можете использовать внутри этого класса, либо вы можете использовать findViewById () в вашем LinearLayout.

...