2016-04-12 5 views
0

Я пытаюсь создать приложение простых парных пар. Приложение начинается со всех TextViews, имеющих «#» в качестве текста. Когда я нажимаю текстовое поле, оно изменяется на букву, которая была сохранена для этого поля.Простые сопоставляющие пары приложения, сравнивающие два TextViews

В любом случае, я хочу открыть два поля (я хочу изменить их строки) и сравнить их. Если они равны, они остаются «открытыми» новыми буквами (например, оба являются «А»). В случае с одинаковыми буквами все работает нормально, но у меня возникают трудности, когда буквы различаются.

Если они не равны, я хочу, чтобы они показывали себя с новым текстом в течение одной секунды, а затем, чтобы перейти к предыдущему знаку (т. Е. «#»). Когда я нажимаю первое поле, он меняет свой текст, но когда я иду за вторым полем, и если их сохраненные буквы не равны, второе поле не меняет текст, а текст из первого поля возвращается к предыдущему знаку ,

Что мне нужно сделать, чтобы показывать поля с новым текстом в течение короткого периода времени, если их строки не равны?

Это как моя таблица выглядит:

enter image description here

public class MainActivity extends AppCompatActivity { 

    TextView textView; 
    int counterForPressedFields= 0; 
    int textViewForComparationCounter = 0; 
    TextView firstTextViewForComparation; 
    TextView secondTextViewForComparation; 
    int[] nonPressedFields= {1, 1, 1, 1}; 
    int pressedField = 2; 
    int tag = 0; 


    public void show(View view) throws InterruptedException { 

     textView = (TextView) view; 

     tag = Integer.parseInt(textView.getTag().toString()); 

     if (nonPressedFields[tag] == 1) { 

      nonPressedFields[tag] = pressedField; 

      if (counterForPressedFields< 2) { 
       textViewForComparationCounter += 1; 
       counterForPressedFields+= 1; 

       switch (tag) { 

        case 0: 
         textView = (TextView) findViewById(R.id.front1); 
         textView.setText("A"); 
         break; 

        case 1: 
         textView = (TextView) findViewById(R.id.front2); 
         textView.setText("B"); 
         break; 

        case 2: 
         textView = (TextView) findViewById(R.id.front3); 
         textView.setText("A"); 
         break; 
        case 3: 
         textView = (TextView) findViewById(R.id.front4); 
         textView.setText("B"); 
         break; 
       } 

       if (textViewForComparationCounter == 1) { 
        firstTextViewForComparation = (TextView) view; 
        firstTextViewForComparation = textView; 

       } else if (textViewForComparationCounter == 2) { 
        secondTextViewForComparation= (TextView) view; 
        secondTextViewForComparation= textView; 
       } 
      } 

      if(counterForPressedFields == 2){ 
       if(firstTextViewForComparation.getText().toString().equals(secondTextViewForComparation.getText().toString())){ 

        counterForPressedFields= 0; 
        textViewForComparationCounter = 0; 
       }else{ 

        firstTextViewForComparation.setText("#"); 
        secondTextViewForComparation.setText("#"); 
        nonPressedFields[Integer.parseInt(firstTextViewForComparation.getTag().toString())] = 1; 
        nonPressedFields[Integer.parseInt(secondTextViewForComparation.getTag().toString())] = 1; 
        counterForPressedFields= 0; 
        textViewForComparationCounter = 0; 
       } 
      } 

     } 

    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
} 

ответ

3

Попробуйте использовать обработчик. Вы можете обновить текстовые элементы обратно до «#» с помощью метода postDelayed.

private final Handler handler = new Handler(); 
Runnable runnable = new Runnable() { 
     public void run() { 
      //update your textViews here 
     } 
    }; 
handler.postDelayed(runnable, millisecondsOfDelay); 

Надеюсь, это поможет!

Смежные вопросы