1

我已经编写了代码来生成动态 EditText。现在我想从中删除特定的 EditText,就像在 Android 中的联系人中一样。如何实现此功能?在显示imgaddress 的代码下方是单击按钮,我正在添加视图,即editText 和imageview 现在在单击取消时取消我想删除editText。

imgaddess.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                linearlay.addView(linearlayout(_intMyLineCount));
                _intMyLineCount++;
                Log.i("Test","Increment => "+_intMyLineCount);
            }
        });


        private LinearLayout linearlayout(int _intID)
    {
        LinearLayout LLMain=new LinearLayout(this);
        LLMain.setId(_intID);  

        LLMain.addView(editText(_intID));
        LLMain.addView(imageview(_intID));
        LLMain.setOrientation(LinearLayout.HORIZONTAL);
        linearlayoutList.add(LLMain);
        return LLMain;
    }   


private EditText editText1(int _intID) {
        EditText editText = new EditText(this);
        editText.setId(_intID);
        editText.setHint("Phone No");
        editText.setSingleLine();
        editText.setInputType(InputType.TYPE_CLASS_NUMBER);
        editText.setPadding(10, 0, 0, 0);
        editTextList1.add(editText);
        return editText;
    }


private ImageView imageview(int _intID) {
        ImageView imgview=new ImageView(this);
        imgview.setId(_intID);
        imgview.setImageResource(R.drawable.cancel_4);
        imageViewList.add(imgview);
        return imgview;
    }
4

4 回答 4

2

我通常使用editText.setVisibility(EditText.GONE);

editText = null;应该把它垃圾收集起来。

于 2013-04-25T06:39:53.713 回答
0

您可以从其父级中删除 EditText

((ViewGroup) editTextToBeDeleted.getParent()).removeView(editTextToBeDeleted);
于 2013-04-25T06:53:51.503 回答
0

您可以像这样删除editText。

 imgaddess.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            LinearLayout LLMain = (LinearLayout)linearlayoutList.get((Integer)v.getTag());
            EditText editText = (EditText)LLMain.getChildAt(0);
            //Now hide it
            editText.setVisibility(View.GONE);
        }
    });
 private ImageView imageview(int _intID) {
    ImageView imgview=new ImageView(this);
    imgview.setId(_intID);
    //Adding Tag in order to get postion.
    imgview.setTag(_intID);
    imgview.setImageResource(R.drawable.cancel_4);
    imageViewList.add(imgview);
    return imgview;
}

希望这会帮助你。

于 2013-04-25T10:43:59.983 回答
0

由于您的 imageview 和 Exittext 具有相同的 _intID。所以在 imageView 上设置 onclickListener。

单击 imageView 时,找到它的 ID,现在找到具有相同 ID 的 ExitText。(为此,您将维护一个添加的 ExitTexts 数组)

一旦我们有了与取消imageView对应的EditText,我们就可以执行exitText.setVisibility(EditText.GONE);

这是它的伪代码。

imageview.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
        // Iterate on ExitText array and check if(exitText.getID() == v.getID())
        //Now we have exitText with same ID as of imageView. So remove it.
        exitText.setVisibility(EditText.GONE);                
        }
    });
于 2013-04-25T07:11:40.447 回答