获取 Expandable ListView 中 EditText 的 ID
Get ID of EditText in Expandable ListView
我正在使用可扩展的 ListView,我在每个 Child 项目中都有一个 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 上有一个按钮,单击该按钮时,我想获取用户输入的每个 Child 的 EditText 的文本,
我试过了:
@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 会起作用:当单击按钮时,展开的组会折叠和展开,所以它会做我想做的事吗?也许
您必须手动设置每个 EditText 的 ID。这可以在 getChildView()
中完成。
尽管它不会帮助您输入并从 Child 获取值。 仅用于设置和获取ID:
@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);
if(childPosition==0)//Original Id will be get only when First Child is being populated
{
edt=(EditText)convertView.findViewById(R.id.marks);
}
edt.setId(childPosition); //here the ID will be same as childPosition i.e. 0,1,2...
//Now You can get the ID by getID(id); //id can be 0,1,2...
Toast.makeText(convertView.getContext(),"This: "+ abc,Toast.LENGTH_SHORT).show();
txtListChild.setText(childText);
return convertView;
}
我正在使用可扩展的 ListView,我在每个 Child 项目中都有一个 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 上有一个按钮,单击该按钮时,我想获取用户输入的每个 Child 的 EditText 的文本, 我试过了:
@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 会起作用:当单击按钮时,展开的组会折叠和展开,所以它会做我想做的事吗?也许
您必须手动设置每个 EditText 的 ID。这可以在 getChildView()
中完成。
尽管它不会帮助您输入并从 Child 获取值。 仅用于设置和获取ID:
@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);
if(childPosition==0)//Original Id will be get only when First Child is being populated
{
edt=(EditText)convertView.findViewById(R.id.marks);
}
edt.setId(childPosition); //here the ID will be same as childPosition i.e. 0,1,2...
//Now You can get the ID by getID(id); //id can be 0,1,2...
Toast.makeText(convertView.getContext(),"This: "+ abc,Toast.LENGTH_SHORT).show();
txtListChild.setText(childText);
return convertView;
}