在Expandable ListView中获取EditText的ID

时间:2017-11-28 03:04:13

标签: android expandablelistview get-childitem

我正在使用Expandable 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上有一个按钮,单击该按钮时,我想获取用户输入的每个孩子的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()中调用它时要传递的参数。  OR

也许一个黑客会工作:点击按钮时,展开的群组会折叠并展开,那么它会做我想要的吗?也许

1 个答案:

答案 0 :(得分:0)

您必须手动设置每个EditText的ID。这可以在getChildView()中完成。 虽然它不会帮助您输入和获取儿童价值观。 仅用于设置和获取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;
        }