如何使用一个EditText在Android中设置多个TextView的文本?

时间:2014-01-16 06:44:20

标签: android textview

我有四个TextView项,所有这些项都是可点击的。我还有一个EditText项和一个“Go”按钮。必须使用用户输入EditText字段的文本来设置被点击的TextView项的文本。

因此,如果我单击TextView项目编号2,然后在EditText框中输入一些文本然后点击“开始”按钮,则必须在TextView项中写入文本输入仅限2号,其他3个TextView项目应保持不变。 我该如何做到这一点?在“Go”按钮的onClick方法中,如何找出点击的TextView

6 个答案:

答案 0 :(得分:1)

这是一个解决方案。创建四个非本地变量(比如 int ),每个文本视图一个,并将其初始化为。单击文本视图时,在该文本视图的 onclick事件中将对应的变量设置为非零值

最后,当您输入edittext并单击go时,检查哪个textview变量非零,并相应地更改该textview(在 go 的onClick事件中) 。还要记得将textview变量设置为零,以便逻辑可以用于将来的输入。

编辑:您还可以通过使用单个变量来简化此方法,并在此处存储1,2,3,4等。但我建议的方法的优势是,即使你想要设置多个的文本而不是它也能正常工作单击go时所有文本视图。

答案 1 :(得分:1)

在类

中创建单个int变量

为所有文本视图设置onclick侦听器,并将id设置为变量并在按钮单击中使用它。

这是我试过的一个例子。

public class MainActivity extends Activity implements OnClickListener {

TextView t1, t2, t3;
EditText e1;
Button b1;
private static int ids = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    t1 = (TextView) findViewById(R.id.textView1);
    t2 = (TextView) findViewById(R.id.textView2);
    t3 = (TextView) findViewById(R.id.textView3);
    e1 = (EditText) findViewById(R.id.one);
    b1 = (Button) findViewById(R.id.enter);
    t1.setOnClickListener(this);
    t2.setOnClickListener(this);
    t3.setOnClickListener(this);

    b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (ids != 0) {
                TextView tx = (TextView) findViewById(ids);
                tx.setText(e1.getText().toString());
            }
        }
    });
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.textView1:
    case R.id.textView2:
    case R.id.textView3:
        ids = v.getId();
        break;
    }
}

}

答案 2 :(得分:1)

假设您有以下四种文字视图:

TextView1
TextView2
TextView3
TextView4

在xml中指定这些TextView的onClick()属性,其值为selectedTextView,如下所示:

<TextView
...
android:onClick="selectedTextView"
/>

现在,在你的活动中,

将全局String变量视为

TextView mTextView;

然后,在名为

onCreate()之外创建一个方法
public void selectedTextView(View view)
{
    mTextView = (TextView) view;
}

在onClick按钮Go内,只需使用以下方式设置文字:

mTextView.setText("Your value inside EditText goes here");

答案 3 :(得分:1)

在您的Activity类中查找每个Textview,如:

    TextView tv_1=(TextView)findViewById(R.id.tv_1);
    TextView tv_2=(TextView)findViewById(R.id.tv_2);
    TextView tv_3=(TextView)findViewById(R.id.tv_3);
    TextView tv_4=(TextView)findViewById(R.id.tv_4);

使用

从onclick函数获取第二个Textview的值
String value=tv_2.getText().tostring(); 

答案 4 :(得分:1)

我不喜欢设置ID以了解要设置的textView。我们正在研究面向对象语言,然后使用结构化数据。为什么不做这样的事呢

public class MainActivity extends Activity implements OnClickListener {

    TextView textView = null;
    EditText e1;
    Button b1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ((TextView) findViewById(R.id.textView1)).setOnClickListener(this);
        ((TextView) findViewById(R.id.textView2)).setOnClickListener(this);
        ((TextView) findViewById(R.id.textView3)).setOnClickListener(this);
        ((TextView) findViewById(R.id.textView4)).setOnClickListener(this);
        e1 = (EditText) findViewById(R.id.one);
        b1 = (Button) findViewById(R.id.enter);

        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (editText != null) {
                    editText.setText(e1.getText().toString());
                }
            }
        });
    }

    @Override
    public void onClick(View v) {
      editText = (TextView)v;
    }

}

答案 5 :(得分:0)

我认为你需要声明一个整数来跟踪被点击的文本视图,然后在按钮的onclicklistener中你应该检查整数值并根据该值设置特定的文本<点击了strong> textview 。我刚刚创建了演示代码,它为您提供了足够的想法让您走上路径.. :)

解决方案: -

    int i = 0;

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

    TextView tv1, tv2, tv3, tv4;
    tv1 = (TextView) findViewById(R.id.tv1);
    tv1 = (TextView) findViewById(R.id.tv2);
    tv1 = (TextView) findViewById(R.id.tv3);
    tv1 = (TextView) findViewById(R.id.tv4);
    EditText et = (EditText)findViewById(R.id.et);

    Button btnGo = (Button)findViewById(R.id.btnGo);

    tv1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            i = 0;
        }
    });
    tv2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            i = 1;
        }
    });
    tv3.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            i = 2;
        }
    });
    tv4.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            i = 3;
        }
    });

    btnGo.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (i) {
            case 0:
                tv1.setText(et.getText().toString());
                break;

            case 1:
                tv2.setText(et.getText().toString());
                break;

            case 2:
                tv3.setText(et.getText().toString());
                break;

            case 3:
                tv4.setText(et.getText().toString());
                break;

            }
        }
    });

}