Доступ к динамически созданным TextViews в Android - PullRequest
0 голосов
/ 26 мая 2020

У меня есть сетка, заполненная числами от 1 до 90, которые были созданы динамически при создании основного действия. Теперь есть кнопка, при нажатии которой генератор случайных чисел генерирует числа от 1 до 90 в случайном порядке без повторения. Поскольку число генерирует число, оно должно быть зачеркнуто в ранее созданной сетке. введите описание изображения здесь

Изменить: это код, который я использовал для создания текстовых представлений в gridLayout.

public void generateNumber(){
    GridLayout gl = (GridLayout)findViewById(R.id.allnumbers);
    gl.setRowCount(9);
    gl.setColumnCount(10);
    gl.setUseDefaultMargins(true);
    for(int i =0;i<90;i++){
        TextView tv = new TextView(getApplicationContext());
        tv.setTextSize(24);
        tv.setPadding(10,10,10,10);
        tv.setId(i);
        int j=i+1;
        tv.setText(""+j);
        tv.setPadding(5,5,5,5);
        gl.addView(tv,i);
    }

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Первое, что вам нужно сделать, это получить доступ к TextView, после чего вы можете изменить его или все, что вы хотите с ним делать. Итак, для этого GridLayout содержит метод с именем getChildAt() и принимает позицию в качестве входных данных.

Итак, чтобы получить доступ к этому TextView, вы можете сделать следующее:

TextView v = parent.getChildAt(i); //i is the position on which you want to do the change

Итак, из вашего ответа я понял, что вы хотите получить доступ к тому же TextView этого случайно сгенерированного числа, предположим, что случайное число - 95, вы хотите получить доступ к TextView, содержащему 90. Итак, для этого вы можете использовать:

int position = yourRandomNumber - 1  
TextView textView = gl.getChildAt(position); //gl is your GridLayout
// Why this -1? Because any array, even in Gridview, count starts from 0 to 89 in your case 
//(total 90) so a TextView which contains 58 have its postition as 57 (-1).
//Now to set, it striked-out, do
textView.setPaintFlags(someTextView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);

Это вычеркнет текст, содержащий значение, которое вы хотите.

0 голосов
/ 26 мая 2020

Я бы сказал, что когда вы генерируете TextView s, вы добавляете либо tag, либо спецификатор c id как:

Id
---

myTextView.setId("myTextView"+i) where i is the index of the for loop.

Tag
---
myTextView.setTag("myTextView"+i) where i is the index of the for loop.

. когда вы генерируете случайное число от 1 до 90, вы можете легко искать его по ID или TAG с помощью myTextView+intRandom, чтобы вы могли изменить его значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...