0

我正在ExpandableListActivityExpandListAdapter.

我的布局:

---------------------------------
|  <TextView>                   |
|                               |
|-------------------------------|
| <ExpandableList>            | |
|  group1                     | |
|   child1: textView editText | |
|   child2: textView switch   | |
|  group2                     | |
|   child1: textView textView | |
|-------------------------------| 
| <footerView>                  |
|  [button]                     |
---------------------------------   

这是我的 child_layout (删除了不必要的部分):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tvChild"
        android:layout_width="400px"
        android:layout_height="wrap_content"
        android:focusable="false" />

    <EditText
        android:id="@+id/etChild"
        android:layout_width="400px"
        android:layout_height="wrap_content"
        android:visibility="gone" />

    <TextView
        android:id="@+id/tvChild2"
        android:layout_width="600px"
        android:layout_height="wrap_content"
        android:visibility="gone" />

    <Switch
        android:id="@+id/switchChild"
        android:layout_width="400px"
        android:layout_height="wrap_content"
        android:textOff="NO"
        android:textOn="YES"
        android:visibility="gone" />
</LinearLayout>

这就是我向每个孩子添加按钮、开关或 textView 的方式:

    Switch swc = (Switch) view.findViewById(R.id.switchChild);
    EditText etc = (EditText) view.findViewById(R.id.etChild);
    TextView tvc = (TextView) view.findViewById(R.id.tvChild2);

    if (groupPosition == 0) {
        swc.setVisibility(View.GONE);
        tvc.setVisibility(View.GONE);
        etc.setVisibility(View.GONE);
        if (childPosition == 0) 
            etc.setVisibility(View.VISIBLE);
        if (childPosition == 1) 
            etc.setVisibility(View.VISIBLE);
        if (childPosition == 2) {
            tvc.setVisibility(View.VISIBLE);
            tvc.setText(GlobalVariables.currentSelectedCar);
        }
    }

因此,每个孩子都有一个TextView不会改变的,加上其中一个EditText/TextView/Switch可由用户编辑。当我单击底部的按钮时,我想获得每个孩子的可编辑项目值。

4

2 回答 2

2

我相信您可以以与获取包含在常规ListView. ExpandableListView具有内置方法,可让您找出单击了哪个项目。一旦您知道单击了列表中的哪个项目,您就可以简单地从与该项目关联的各个视图中提取值。我会做以下事情:

(1)setOnGroupClickListener为您的ExpandableListView. 除了其他事项外,onGroupClick侦听器还获得了被选择的视图及其在列表中的位置。

(2) 一旦您知道选择了列表中的哪个项目,您应该能够以两种方式之一提取数据。如果您要查找的数据是固定的,请使用位置指示器从支持列表的适配器检索该数据。如果您正在该选定项目中寻找视图(听起来像您) ,请findViewById在返回的视图上使用。例如 - 作为onGroupClick提供 View v 作为参数的方法

String input = v.findViewById(R.id.etChild).getText().toString();

调用findViewById提供的视图onGroupClick应该允许您在该视图中查看您提供的 id 的子视图。这样您就可以从每个列表项的输入字段中提取数据。

于 2013-03-28T12:44:54.103 回答
-1

来自#Rarw 的想法

TextView input = (TextView) v.findViewById(R.id.child_item_elv);
Toast.makeText(getActivity().getApplicationContext(), "child clicked : " + input.getText() , Toast.LENGTH_SHORT).show();

这个工作,在里面OnGroupListener

于 2015-06-21T13:17:07.787 回答