Как узнать последовательность нажатых кнопок для отображения в текстовых видах - PullRequest
0 голосов
/ 10 апреля 2019

Привет всем, как дела? Я в порядке.

Я занимаюсь разработкой приложения, в котором у меня есть шесть кнопок и шесть TextView: Кнопка 1, Button2, Button3, Button4, Button5, Button6. TextView1, TextView2, TextView3, TextView4, TextView5, TextView6.

Мне нужно отобразить текст кнопок в текстовых представлениях (getText (). ToString ()); Но мне нужно отобразить в TextView1 первую нажатую кнопку, независимо от того, была ли она Button1, Button2, Button3, Button4, Button5 или Button6. Во втором TextView вторая кнопка нажата. В жажде TextView нажата третья кнопка.

Это мой код

пакет com.flixarts.ar.englishnow;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.w3c.dom.Text;


public class quiz extends AppCompatActivity {
    private Button opcion1;
    private Button opcion2;
    private Button opcion3;
    private Button opcion4;
    private Button opcion5;
    private Button opcion6;

    private TextView text0;
    private TextView text1;
    private TextView text2;
    private TextView text3;
    private TextView text4;
    private TextView text5;
    private TextView text6;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz);
    text0 = (TextView)findViewById(R.id.text0);
    text1 = (TextView)findViewById(R.id.text1);
    text2 = (TextView)findViewById(R.id.text2);
    text3 = (TextView)findViewById(R.id.text3);
    text4 = (TextView)findViewById(R.id.text4);
    text5 = (TextView)findViewById(R.id.text5);
    text6 = (TextView)findViewById(R.id.text6);

    opcion1 = (Button)findViewById(R.id.opcion1);
    opcion2 = (Button)findViewById(R.id.opcion2);
    opcion3 = (Button)findViewById(R.id.opcion3);
    opcion4 = (Button)findViewById(R.id.opcion4);
    opcion5 = (Button)findViewById(R.id.opcion5);
    opcion6 = (Button)findViewById(R.id.opcion6);


    opcion1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {


        Button opcion1 = (Button)view;
        String textButton = opcion1.getText().toString();
     text0.setText(textButton);

        //writeTextView();
    }

});


opcion2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Button opcion2 = (Button)view;
        String textButton2 = opcion2.getText().toString();
        text2.setText(textButton2); }});

opcion3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Button opcion3 = (Button)view;
        String textButton3 = opcion3.getText().toString();
        text3.setText(textButton3);  } });

opcion4.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Button opcion4 = (Button)view;
        String textButton4 = opcion4.getText().toString();
        text4.setText(textButton4); } });

opcion5.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Button opcion5 = (Button)view;
        String textButton5 = opcion5.getText().toString();
        text5.setText(textButton5);  } });

opcion6.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Button opcion6 = (Button)view;
        String textButton6 = opcion6.getText().toString();
        text6.setText(textButton6);  } });

}

}

Проблема с этим кодом заключается в том, что в первой текстовой панели отображается текст первой кнопки, во второй текстовой панели - вторая кнопка, в текстовом просмотре tirhd - третья кнопка и т. Д.

Мне нужно показать в первом текстовом просмотре первую нажатую кнопку, независимо от того, была ли она butotn1, 2, 3,4, 5 или 6.

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

Спасибо за чтение! Хорошего дня, Мауро.

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Mauro: поместите все ваши TextView ссылки в список [text0, ... textn] и сохраните индекс для текущего текстового представления, начиная с 0:

List<TextView> textViews = Arrays.asList(text1, text1);
int current = 0;

Сделайте свою деятельность quiz внедрите View.OnClickListener и переопределите onClick.Затем присвойте заголовок кнопки текущему текстовому представлению из массива.

    @Override
    public void onClick(View v) {
        textViews.get(current % textViews.size()).setText(((Button)v).getText());
        current++;
    }

Увеличение current гарантирует, что следующая нажатая кнопка «ударит» по следующему текстовому представлению.

0 голосов
/ 10 апреля 2019
  1. Поместите кнопки и текстовые представления в массивы:
private Button[] buttons;
private TextView[] tvs;

@Override
protected void onCreate(Bundle savedInstanceState) {
  buttons = new Button[6];
  buttons[0] = findViewById(R.id.opcion1);
  // make the same for all buttons and TVs
}
Сохранить индекс текущего клика:
private int mClickIndex;
Используйте один и тот же OnClickListener для всех кнопок:
private View.OnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Button opcion = (Button)view;
        if (mClickListener >= 6) return;
        tv[mClickIndex].setText(opcion.getText().toString());
        mClickListener++;
    }
  };

...
onCreate() {
  ...
  for (int i = 0; i < buttons.length; i++) {
    buttons[i].setOnClickListener(mOptionsClickListener);
  }
  ...
}

...