0

我的 Android 项目中有一个可用的可扩展列表视图,其中每个子视图包含一个 ImageView、一个 TextView、一个 EditText 和一个复选框:

<?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 上的按钮触发。但我不确定如何在放大视图后识别小部件的值。我会很感激一点点,我一直无法在网上找到一个好的答案!

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);
    }
}

然后在获取子视图中:

    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() 是否会像你想要的那样工作。可能而且看起来更笨拙的是,您可能已经需要准备好所有内容的 Hashmaps 的 ArrayList - 然后复制您想要放入数据库中的所有内容,具体取决于它是否对应于复选框位置检查。这听起来不漂亮,但它可能会奏效。

更理想的是,我猜你是否可以逐步检查 check_states 列表并根据它是 1 或 0,在该 id 或位置复制 edit_text 和 text_view 。可悲的是,这超出了我现在的水平。如果你能做到这一点,那么你就有更多的权力。

于 2012-10-01T13:51:24.717 回答