大家好,你好吗?我很好。
我正在开发一个应用程序,其中在一个活动中我有六个按钮和六个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的文本中设置文本。
感谢您的阅读! 祝你有美好的一天,毛罗。
答案 0 :(得分:0)
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;
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
可确保单击的下一个按钮将“命中”下一个文本视图。