Android 如何获取在ListView中添加的控件的值

Android 如何获取在ListView中添加的控件的值,android,sqlite,gridview,Android,Sqlite,Gridview,我的ListView控件中有如下数据: Country State City India U.P. Kanpur India M.P. Gwalior Country State City Choose India U.P. Kanpur Yes|No India M.P. Gwalior Yes|No 现在的问题是,我想通过单选按钮或任何其他控件在ListView中添加选择,如: Country State City Ind

我的ListView控件中有如下数据:

Country  State  City
India    U.P.   Kanpur
India    M.P.   Gwalior
Country  State  City     Choose
India    U.P.   Kanpur   Yes|No
India    M.P.   Gwalior  Yes|No
现在的问题是,我想通过单选按钮或任何其他控件在ListView中添加选择,如:

Country  State  City
India    U.P.   Kanpur
India    M.P.   Gwalior
Country  State  City     Choose
India    U.P.   Kanpur   Yes|No
India    M.P.   Gwalior  Yes|No
最后保存数据及其选择

更新:-

我成功地在listView中添加了控件,现在我想在listView的所有行中运行一个循环,以获取每行的值,包括radiobutton

public static final String KEY_DESCRIPTION = "description";
public static final String KEY_ID = "id";
public static final String KEY_ROW_ID = "_id";


SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                    R.layout.listview_layout, cursor, new String[] {
                            GridTestActivity.KEY_ROW_ID,
                            GridTestActivity.KEY_ID,
                            GridTestActivity.KEY_DESCRIPTION }, new int[] {
                            R.id.txtLv_id, R.id.txtLvid,
                            R.id.txtLvDescription });
            adapter.setViewResource(R.layout.listview_layout);
            lv.setAdapter(adapter);
            lv.setTextFilterEnabled(true);
            lv.setFocusable(false);

lv.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> a, View v, int i,
                        long l) {
                    try {

                        int id = v.getSelectedItemPosition();
                        String id1 = (String) lv.getSelectedItem();
                        long id2 = lv.getSelectedItemId();
                        int id3 = i;//Return Row number
                    } catch (Exception ex) {
                        ex.setStackTrace(null);
                    }
                }
            });

public void onRadioButtonClicked(View v) {
    RadioButton rb = (RadioButton) v;
    Toast.makeText(getApplicationContext(), rb.getText(),
            Toast.LENGTH_SHORT).show();
}
公共静态最终字符串键\u DESCRIPTION=“DESCRIPTION”;
公共静态最终字符串键\u ID=“ID”;
公共静态最终字符串键\u行\u ID=“\u ID”;
SimpleCrsorAdapter=新的SimpleCrsorAdapter(此,
R.layout.listview_布局,光标,新字符串[]{
GridTestActivity.KEY\u行\u ID,
GridTestActivity.KEY\u ID,
GridTestActivity.KEY_DESCRIPTION},新int[]{
R.id.txtLv_id,R.id.txtLvid,
R.id.txtLvDescription});
adapter.setViewResource(R.layout.listview\u布局);
低压设置适配器(适配器);
lv.setTextFilterEnabled(真);
lv.setFocusable(假);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共虚线(适配器视图a、视图v、内部i、,
长(l){
试一试{
int id=v.getSelectedItemPosition();
字符串id1=(字符串)lv.getSelectedItem();
long id2=lv.getSelectedItemId();
int id3=i;//返回行号
}捕获(例外情况除外){
例如,设置跟踪(空);
}
}
});
单击RadioButton上的公共无效(视图v){
RadioButton rb=(RadioButton)v;
Toast.makeText(getApplicationContext(),rb.getText(),
吐司。长度(短)。show();
}
setOnItemClickListener在更新记录时返回行号,我需要Id的值。

<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget443"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxWidth="400sp"
    android:minWidth="400sp"
    android:orientation="vertical"
    android:stretchColumns="3" >

    <TableRow
        android:id="@+id/widget4344"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:maxWidth="400sp"
        android:minWidth="400sp"
        android:orientation="horizontal"
        android:padding="0sp" >

        <TextView
            android:id="@+id/txtLv_id"
            android:layout_width="10sp"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:padding="4sp"
            android:text="@string/txtLv_Id"
            android:textSize="6pt"
            android:visibility="invisible" >
        </TextView>

        <TextView
            android:id="@+id/txtLvid"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:padding="4sp"
            android:text="@string/txtLvId"
            android:textSize="6pt" >
        </TextView>

        <TextView
            android:id="@+id/txtLvDescription"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:padding="4sp"
            android:text="@string/txtLvDescription"
            android:textSize="6pt" >
        </TextView>

        <RadioGroup
            android:id="@+id/rdGroup"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/rdYes"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:onClick="onRadioButtonClicked"
                android:text="@string/rdYes" />

            <RadioButton
                android:id="@+id/rdNo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:onClick="onRadioButtonClicked"
                android:text="@string/rdNo" />
        </RadioGroup>
    </TableRow>
</TableLayout>


首先要做的是将其设置为listview而不是gridview,因为您有行项目列表,然后在XML中使用行布局可以向视图添加三个TextView和一个单选按钮/复选框。

临时解决方案:)

根据所选文本和IDColumn的相应值,立即将记录保存到数据库中


但我正在寻找更好的解决方案。

是的,我做到了。。现在的问题是,我需要根据用户所做的选择更新数据库。好吧,在每个单选按钮/复选框上添加一个侦听器,然后当用户单击它时,你可以对listener中的数据执行任何操作。我的XML中只有一个radiogroup,它的创建次数是该行存在的次数。我认为,我需要运行for循环,但无法确定如何获取每一行的值。在listadapter中,将侦听器添加到每个膨胀视图的RadioGroup中。例如:不要以[solved]开头标题。要么接受一个现有的答案,要么如果你自己找到了解决方案,就把它变成一个实际的答案并接受它。
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget443"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxWidth="400sp"
    android:minWidth="400sp"
    android:orientation="vertical"
    android:stretchColumns="3" >

    <TableRow
        android:id="@+id/widget4344"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:maxWidth="400sp"
        android:minWidth="400sp"
        android:orientation="horizontal"
        android:padding="0sp" >

        <TextView
            android:id="@+id/txtLv_id"
            android:layout_width="10sp"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:padding="4sp"
            android:text="@string/txtLv_Id"
            android:textSize="6pt"
            android:visibility="invisible" >
        </TextView>

        <TextView
            android:id="@+id/txtLvid"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:layout_column="1"
            android:padding="4sp"
            android:text="@string/txtLvId"
            android:textSize="6pt" >
        </TextView>

        <TextView
            android:id="@+id/txtLvDescription"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:padding="4sp"
            android:text="@string/txtLvDescription"
            android:textSize="6pt" >
        </TextView>

        <RadioGroup
            android:id="@+id/rdGroup"
            android:layout_width="100sp"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/rdYes"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:onClick="onRadioButtonClicked"
                android:text="@string/rdYes" />

            <RadioButton
                android:id="@+id/rdNo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:onClick="onRadioButtonClicked"
                android:text="@string/rdNo" />
        </RadioGroup>
    </TableRow>
</TableLayout>