我怎么知道在文本视图中显示的按下按钮的顺序

时间:2019-04-10 20:13:24

标签: android button textview

大家好,你好吗?我很好。

我正在开发一个应用程序,其中在一个活动中我有六个按钮和六个TextViews: 按钮1,按钮2,按钮3,按钮4,按钮5,按钮6。 TextView1,TextView2,TextView3,TextView4,TextView5,TextView6。

我必须在textviews中显示按钮的文本(getText()。toString());  但是我需要在TextView1中显示按下的第一个按钮,无论是Button1,Button2,Button3,Button4,Button5还是Button6。 在第二个TextView中,按下第二个按钮。 在口渴的TextView中,按下了第三个按钮。

这是我的代码

package 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按下按钮时,都会按顺序在textview的文本中设置文本。

感谢您的阅读! 祝你有美好的一天,毛罗。

2 个答案:

答案 0 :(得分:0)

  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
}
  1. 保留当前点击的索引:
private int mClickIndex;
  1. 对所有按钮使用相同的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);
  }
  ...
}

答案 1 :(得分:0)

毛罗:将您所有的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可确保单击的下一个按钮将“命中”下一个文本视图。