【发布时间】:2017-11-28 03:04:13
【问题描述】:
我使用的是可扩展的 ListView,每个子项中都有一个 EditText。 list_item.xml:
<TextView
android:id="@+id/lblListItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="TextView"
android:textColor="#000000"
android:textSize="17dp" />
<EditText
android:id="@+id/marks"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Obtained"
android:inputType="number"
android:maxLines="1"
tools:layout_editor_absoluteX="142dp"
tools:layout_editor_absoluteY="60dp" />
mainActivity上有一个按钮,当点击按钮时,我要获取User输入的每个Child的EditText的Text, 我试过了:
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView.findViewById(R.id.lblListItem);
edt=(EditText)convertView.findViewById(R.id.marks);
String abc=edt.getText().toString();
Toast.makeText(convertView.getContext(),"This: "+ abc,Toast.LENGTH_SHORT).show();
txtListChild.setText(childText);
return convertView;
}
但是,只有在扩展组时才有效,(Toast 向我显示在 EditText 中很容易出现的文本)当用户点击按钮时无效。
那么,如何在 Button Click 中调用 getChildView 方法? 我不知道在 OnClick() 中调用时要传递什么参数。 或
也许hack会起作用:当按钮被点击时,展开的组被折叠和展开,所以它会做我想要的?也许
【问题讨论】:
-
我想获取所有子项的文本。 (可能在一个循环中)但是 getView() 没有循环,它工作得很好(否则它只在扩展组时工作)
-
嗯,它必须只是一个按钮,正如你所说,这不是一个好方法,我认为,原因是:某些 EditTexts 可能为空?也许。然后我可以限制用户,按钮只有在所有字段都填满时才会起作用。所以,请告诉我,如何在 One ButtonClick 上保存引用并传递所有值。
-
获取文本的顺序应与显示的一致。我的意思是,就像上面代码中显示的 Toast 一样。
-
用户在一个会话期间只能进入一个组。没有孩子的 EditTexts 会大于 20。所以,我认为,这不是内存管理问题?
标签: android expandablelistview get-childitem