我有四个TextView
项,所有这些项都是可点击的。我还有一个EditText
项和一个“Go”按钮。必须使用用户输入EditText
字段的文本来设置被点击的TextView
项的文本。
因此,如果我单击TextView
项目编号2,然后在EditText
框中输入一些文本然后点击“开始”按钮,则必须在TextView
项中写入文本输入仅限2号,其他3个TextView
项目应保持不变。
我该如何做到这一点?在“Go”按钮的onClick方法中,如何找出点击的TextView
?
答案 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;
}
}
});
}