我有一个LinearLayout
(比如父母)我正在给另一个LinearLayout
(说孩子)充气,其中包含EditText
& ImageButton
。
点击主布局中的按钮,我正在充气儿童布局。当单击ImageButton
子布局时,布局将被删除。我没有设置这个问题。
现在,我想在EditText
点击“保存”按钮时获取所有ActionBar
子布局的文字。
以下是我用来夸大视图的方法。 mainLayout
是我的父布局。现在,如何在活动中的任何位置获取所有已添加EditText
的文字?
private void addEditView(final LinearLayout mainLayout) {
LayoutInflater inflater = LayoutInflater.from(this);
View theInflatedView = inflater.inflate(R.layout.layout_add_phone_number_listview, null);
//Get the EditText in you xml to set the new id
EditText editText = (EditText) theInflatedView.findViewById(R.id.et_pn);
editText.setId(4000+1);//mainLayout.getChildCount()
ImageButton remove = (ImageButton) theInflatedView.findViewById(R.id.btn_remove_raw);
remove.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mainLayout.removeView((View)v.getParent());
}
});
//add the view into the LinearLayout (global variable)
mainLayout.addView(theInflatedView);
}
我尝试了什么:
LinearLayout ll = (LinearLayout)findViewById(R.id.phone_info);
int count = ll.getChildCount();
for(int i =0;i<count;i++)
{
Log.e("child count:", "count:" + count + "ID:" + ll.getChildAt(i).getId());
View vi = ll.getChildAt(i);
if(vi instanceof EditText)
{
// you got the spinner
EditText s = (EditText) findViewById(4000+i);
Log.e("Item selected",s.getText().toString());
}
}
答案 0 :(得分:0)
在您的父[{1}}上使用mainLayout
方法查找您的孩子线性布局。比它上面找到它的子元素具有相同的逻辑。每个视图都有{child}的findViewById()
方法。
答案 1 :(得分:0)
试试这个,
ArrayList<String> edittextValues = new ArrayList<String>();
for(int i = 0; i < mainLayout.getChildCount(); i++){
View view = (View)mainLayout.getChildAt(i);
EditText editText = (EditText) view.findViewById(R.id.et_pn);
edittextValues.add(editText.getText().toString());
}
答案 2 :(得分:0)
您的问题IMO认为您要使用ListView
来创建自己的列表,并附加每个View
。
我建议的解决方案:
将ListView
与ArrayAdapter
一起使用。您将能够访问EditText
中每一行的ImageButton
和ArrayAdapter
。
修改强>
根据我们的讨论,由于ListView
的回收属性,在添加行后用户输入文本未保存和丢失的问题,您应该自定义ArrayAdapter
以保存用户键入的文本。
这可以在您getView
的{{1}}中完成,如此处所述:https://stackoverflow.com/a/9441210/891479。