0

ExpandableListActivityと組み合わせて使用​​していExpandListAdapterます。

私のレイアウト:

---------------------------------
|  <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、ユーザーが編集できる の 1 つがあります。下部のボタンをクリックすると、各子の編集可能なアイテムの値を取得したいと思います。

4

2 に答える 2

2

これは、通常のListView. ExpandableListViewには、クリックされたアイテムを見つけることができるメソッドが組み込まれています。リスト内のどのアイテムがクリックされたかがわかれば、そのアイテムに関連付けられた個々のビューから値を簡単に抽出できます。私は次のことをします:

(1)setOnGroupClickListenerあなたのためにExpandableListViewonGroupClickリスナーは、とりわけ、選択されたビューとリスト内の位置を取得します。

(2) リスト内のどの項目が選択されたかがわかれば、2 つの方法のいずれかでデータを抽出できるはずです。探しているデータが固定されている場合は、位置インジケーターを使用して、リストをサポートしているアダプターからそのデータを取得します。選択したアイテム内のビューを探している場合はfindViewById、返されたビューで使用します。たとえば、onGroupClickView v を引数として指定したメソッドとして

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

findViewByIdによって提供されたビューを呼び出すと、そのビューonGroupClick内で、提供した ID の子ビューを探すことができます。そうすれば、各リスト項目内の入力フィールドからデータを抽出できます。

于 2013-03-28T12:44:54.103 に答える