Случайный переключатель связан в зависимости от заполненных TextViews - PullRequest
0 голосов
/ 08 ноября 2018

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

Теперь я хочу, чтобы случайная граница была ограничена textViews, которые на самом деле содержат введенные имена ...

Random r = new Random();
int Case = r.nextInt(6);

switch(Case){  
case 0: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player");  
    tv.setText(st);  
break;  


case 1: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player2");  
    tv.setText(st);  
break;  

case 2: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player3");  
    tv.setText(st);  
break;  

case 3: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player4");  
    tv.setText(st);  
break;  

case 4: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player5");  
    tv.setText(st);  
break;  

case 5: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player6");  
    tv.setText(st);  
break;  

case 6: tv = findViewById(R.id.textView2);  
    st = getIntent().getExtras().getString("Player7");  
    tv.setText(st);  
break;

Я думаю об использовании чего-то вроде

int x;
if (textView1 filled && TextView2 empty){x=0}
if else (textview1 filled && TextView2 filled && TextView3 empty) {x=1} etc.
Random r = new Random();
int Case = r.nextInt(x);

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Но что произойдет, если if else (textview1 filled && TextView2 filled && TextView3 empty) {x=1} etc. третье поле будет пустым, а fourt - нет? Лучше собрать все ваши поля в массив и повторить. Если поле заполнено, добавьте 1 к счетчику. Как то так:

int filledCount = 0;
TextView[] views = {TextView1, TextView2, ...};
for (TextView view : views)
{if (view.filled) filledCount++;}

Если вы используете Java 8, используйте потоки. Stream.of(TextView1,TextView2,...).filter(TextView::isFilled).count();

0 голосов
/ 08 ноября 2018

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

Вы можете проверить, является ли Textview пустым, как это:

TextView text= findById(R.id.textview);
Boolean isEmpty =text.getText().toString().isEmpty();
...