如何删除动态创建的EditText?

时间:2019-06-27 10:59:53

标签: android android-edittext dynamically-generated

我想删除动态创建的编辑文本,但找不到该Edittext ID。基本上,我不知道...

我用这段代码创建了Edittext。

public void addEditText() {

    // add edittext
    etPincode = new EditText(mActivity);
    allEt.add(etPincode);
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    p.setMargins(0, 5, 0, 0);

    etPincode.setLayoutParams(p);
    etPincode.setId(numberOfLines + 1);
    etPincode.setPadding(50,50,50,50);
    etPincode.setBackgroundResource(R.drawable.et_rectangular_noradius);
    etPincode.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);
    int maxLength = 10;
    InputFilter[] fArray = new InputFilter[1];
    fArray[0] = new InputFilter.LengthFilter(maxLength);
    etPincode.setFilters(fArray);
    Log.v("etttId1", String.valueOf(etPincode.getId()));
    Log.v("etttId2", String.valueOf(numberOfLines));

    llPincode.addView(etPincode);
    numberOfLines++;
}

以及用于从 edittext 检索值的代码。

strings[] = new String[allEt.size()];
    for(int i=0; i < allEt.size(); i++){
        strings[i] = allEt.get(i).getText().toString();
        pincodeArray.add(strings[i]);
    }

    pincodes= String.valueOf(pincodeArray);

我想删除我的edittext,也想在edittext的右边添加一个删除图像。

2 个答案:

答案 0 :(得分:0)

您可以使用 llPincode

将其删除

如果llPincode只有一个孩子,或者您知道该职位,请使用:

llPincode.removeChildAt(position);

如果llPincode具有多个视图,则使用循环

foreach(int i=0; i< llPincode.toChildCount; i++){
    if(view instance of EditText){
        llPincode.removeChildAt(i)
    }
}

答案 1 :(得分:0)

由于已经在addEditText()外部保存了对etPincode的引用,因此只需执行以下操作:

public void removeEdit(){
    llPincode.removeView(etPincode);
}