0

Android プロジェクトで機能する展開可能なリストビューがあり、各子には ImageView、TextView、EditText、および Checkbox が含まれています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="#CCCCCC"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/imgname"
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="True"
    android:contentDescription="@+id/imgdesc"
    android:paddingLeft="1dp"
    android:scaleType="fitCenter"
    android:src="@drawable/logo_grey" />

<TableLayout
    android:id="@+id/container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_toLeftOf="@+id/check1"
    android:layout_toRightOf="@+id/imgname"
    android:stretchColumns="0" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/desc"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:textSize="13dp"
            android:background="#CCCCCC"
            android:textColor="#777777"
            android:textStyle="bold" />
    </TableRow>

    <TableRow
        android:id="@+id/tableRow2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="fill_horizontal" >

        <EditText
            android:id="@+id/content"
            style="textViewStyle"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:fadingEdge="none"
            android:focusable="true"
            android:hint="@+id/contenthint"
            android:isScrollContainer="true"
            android:minWidth="150dp"
            android:singleLine="false"
            android:textSize="10dp"
            android:textStyle="italic" >
        </EditText>
    </TableRow>
</TableLayout>

<CheckBox
    android:id="@+id/check1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:focusable="false"
    android:gravity="right" />
 </RelativeLayout>

SQLite データベースに書き込む目的で、チェックボックスの値が true である子ごとに、TextView desc からのテキストと EditText コンテンツからのテキストを、おそらく値ペアの配列として含むリストを作成したいと考えています。 . この操作は、ExpandableListActivity の Button を介してユーザーによってトリガーされます。しかし、ビューを膨らませた後にウィジェットの値を識別する方法がわかりません。オンラインで良い答えを見つけることができませんでした。

4

1 に答える 1

0

私自身はプロではありませんが、最善を尽くします。まず、展開可能なリストビューでチェックボックスの状態を追跡する何かがあれば役立ちます。まだ持っていない場合。これが私が使用しているもので、チェックボックス付きの Android ExpandableListView から適応させたもので、チェックされた状態を制御しています:

//  set checkbox states
ArrayList<ArrayList<Integer>> check_states = new ArrayList<ArrayList<Integer>>(children.length);
public void setChildrenAndValues() { 
    for(int i = 0; i < children.length; i++) {
        ArrayList<Integer> tmp = new ArrayList<Integer>(children[i].length);
        for(int j = 0; j < children[i].length; j++) {
            tmp.add(1);
        }
        check_states.add(tmp);
    }
}

次に、get childview で:

    childcb.setOnClickListener(new OnClickListener() {  
        public void onClick(View v) {
            if (childcb.isChecked()) {
                check_states.get(groupPosition).set(childPosition, 1);
            }else{ check_states.get(groupPosition).set(childPosition, 0);
            }
        }
    });

したがって、同じ流れに従って、データベースのコンテンツを保存するには、いくつかのボタンの void onclick メソッドでこれを試すことができます。

    if (check_states.get(groupPosition).get(childPosition) == 1) {
        desc_content4db.put(desc_tv.getText().toString(), content_et.getText().toString());
    }else{
        // placeholder code, w.e. you want
    }

そしてこれは他の場所:

HashMap<String,String> desc_content4db = new HashMap<String, String>();

desc_tv/content_et.getText().toString() が希望どおりに機能するかどうかはわかりません。可能性が高く、より不器用に見えるのは、すべてのコンテンツのハッシュマップの ArrayList を準備しておく必要があるかもしれないということです - そして、それがチェックボックスに対応するかどうかに応じて、データベースに入れたいすべてのものをコピーします位置確認済み。きれいに聞こえませんが、うまくいくかもしれません。

より理想的には、check_states リストをステップスルーし、それに応じて 1 または 0 である場合、その ID または位置に edit_text と text_view をコピーすると思います。悲しいことに、それは今の私のレベルを超えています。それができれば、もっと力を発揮できます。

于 2012-10-01T13:51:24.717 に答える