在android中设置并获取Edittext中的Id
我在同一视图中使用多个Edittext。因此,我与单击哪个EditText视图相冲突。所以在这里先设置id,然后设置id。但无法获取id,请单击可编辑文本 我的代码: 如果我使用focuschangelistener,则可以:在android中设置并获取Edittext中的Id,android,android-layout,android-edittext,Android,Android Layout,Android Edittext,我在同一视图中使用多个Edittext。因此,我与单击哪个EditText视图相冲突。所以在这里先设置id,然后设置id。但无法获取id,请单击可编辑文本 我的代码: 如果我使用focuschangelistener,则可以: txtBox.setOnFocusChangeListener(new OnFocusChangeListener() { private int id_focus;
txtBox.setOnFocusChangeListener(new OnFocusChangeListener()
{
private int id_focus;
@Override
public void onFocusChange(View vv, boolean hasFocus)
{
if (hasFocus == false)
{
System.out.println("FALSE "+vv.getId());
}else {
id_focus=vv.getId();
System.out.println("TRUE ID "+vv.getId());
for (int k = 0; k < edit_text_value_list.size(); k++){
if (edit_text_value_list.get(k).getId() == id_focus) {
Toast.makeText(context, "you have clicked=="+elemName.get(k).toString()+ edit_text_value_list.get(k).getText().toString(), 5000).show();
}
}
试试这个
EditText txtBox=EditText findviewbydr.id.edittext1//,用于xml中请尝试以下代码以获取存储EditText值:- 在edittext上设置id 从edittext获取值 有关更多信息,请参阅以下链接:-
在您的代码中,您的edittext将被一个id覆盖,因此它将发生,并且您每次都获得相同的id --------你的代码----------
for(int j=0, j=<3; j++){
EditText txtBox = new EditText(context);
txtBox.setId(j);
}
-----更改代码--------
这将发生,因为每次您需要在这里为您的组件创建新对象时,您只是全局声明它
private EditText;
for(int j=0, j=<3; j++){
txtBox = new EditText(context);
txtBox.setId(j);
}
在这里,我可以看到你需要4编辑文本添加到您的布局。因此,创建一个大小为4的edittext数组。如下图所示:
Private EditText txtBox[] = new EditText[4] ;
EditText editFirst = (EditText)findViewById(idsForEditText[0]);
EditText editSecond = (EditText)findViewById(idsForEditText[1]);
EditText editThird = (EditText)findViewById(idsForEditText[2]);
EditText editFourth = (EditText)findViewById(idsForEditText[3]);
现在您需要为每个edittext创建ID,因此您必须创建另一个整数数组,该数组将包含ID,是的,它的大小将再次为4
private int idsForEditText[] = new int[4];
现在,您将在ids数组中放置ID:
for(int j = 0; j<txtBox.length; i++){
txtBox[j].setId(j);
idsForEditText[j] = j;
}
editFirst.addTextChangedListener等
希望这将对您有所帮助:我认为,您创建自定义类,可能会对您有所帮助,请使用此:
List<EditText> edittext_list = new ArrayList<EditText>();
Private EditText txtBox ;
for(int j=0, j=<3; j++){
txtBox = new EditText(context);
edittext_list.add(txtBox);
txtBox.setId(j);
getEditTextValue(txtBox);
}
在addTextChangedListenerlistener中执行以下操作:
private void getEditTextValue(final EditText txtBox3) {
txtBox3.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (s.length() == 0)
{
return;
}
System.out.println("txtBox3 "+ txtBox3.getId());
for (int k = 0; k < edittext_list .size(); k++){
if (edittext_list .get(k).getId() == txtBox3.getId()) {
//Do, whatevery your clicked editext after input.
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
});
}
这太简单了
声明整数变量,如下代码所示:
numberofpasses[totalitems].addTextChangedListener(new TextWatcher() {
int total;
String value;
int id=numberofpasses[totalitems].getId();
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
value=arg0.toString();
if(!value.equals(""))
{
total=Integer.valueOf(prc)*Integer.valueOf(value);
txttotal[id].setText(String.valueOf(total));
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
});
尝试int id=txtBox.getId;每次单击edittext,我都会得到1。我可以通过编程方式从中创建edittext。你们并没有看到上面。所以,我也看到了这个教程,但如何在上面使用我的问题。任何想法,addTextChangedListener然后获取id。实际上我在外部完成了,但我关心的是如何在后TextChanged中获取id。看,我的密码。
EditText editFirst = (EditText)findViewById(idsForEditText[0]);
EditText editSecond = (EditText)findViewById(idsForEditText[1]);
EditText editThird = (EditText)findViewById(idsForEditText[2]);
EditText editFourth = (EditText)findViewById(idsForEditText[3]);
List<EditText> edittext_list = new ArrayList<EditText>();
Private EditText txtBox ;
for(int j=0, j=<3; j++){
txtBox = new EditText(context);
edittext_list.add(txtBox);
txtBox.setId(j);
getEditTextValue(txtBox);
}
private void getEditTextValue(final EditText txtBox3) {
txtBox3.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
if (s.length() == 0)
{
return;
}
System.out.println("txtBox3 "+ txtBox3.getId());
for (int k = 0; k < edittext_list .size(); k++){
if (edittext_list .get(k).getId() == txtBox3.getId()) {
//Do, whatevery your clicked editext after input.
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
});
}
numberofpasses[totalitems].addTextChangedListener(new TextWatcher() {
int total;
String value;
int id=numberofpasses[totalitems].getId();
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
value=arg0.toString();
if(!value.equals(""))
{
total=Integer.valueOf(prc)*Integer.valueOf(value);
txttotal[id].setText(String.valueOf(total));
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
});