android - 滚动列表时,ListView 中的 CheckBox 自动勾选

标签 android listview android-listview android-adapter

我在我的应用程序中使用 ListView,它在每个列表项中包含一些元素,例如文本框和 CheckBox。当我用相同的值填充第一个文本框时,第七个或任何其他随机文本框自动填充并且当我检查 CheckBox 任何其他随机 CheckBox 也会自动检查

我无法弄清楚为什么会这样。

我的代码如下:

ListView 内容

<!--- add your MY problem code comment -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/hyList"
    android:layout_width="fill_parent"
    android:layout_height="35sp"
    android:layout_gravity="top"
    android:orientation="horizontal" >

    <TableLayout
        android:id="@+id/tbltab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="100" >    
        <TableRow
            android:id="@+id/rowfooter"
            android:layout_width="fill_parent"
            android:layout_height="35sp"
            android:gravity="center_horizontal|bottom" >    
            <TextView
                android:id="@+id/txt_Hy_ID"
                android:layout_width="0sp"
                android:layout_height="35sp"
                android:textSize="1pt" >
            </TextView>    
            <TextView
                android:id="@+id/txt_HyID"
                android:layout_width="0sp"
                android:layout_height="35sp"
                android:textSize="1pt" >
            </TextView>    
            <TextView
                android:id="@+id/txt_Hy_Area"
                android:layout_width="200sp"
                android:layout_height="35sp"
                android:layout_gravity="center_vertical"
                android:gravity="left"
                android:textSize="8pt" >
            </TextView>    
            <CheckBox
                android:id="@+id/chkHyCondition"
                android:layout_width="60sp"
                android:layout_height="35sp"
                android:layout_gravity="center"
                android:saveEnabled="true" />    
            <EditText
                android:id="@+id/editTxtHyRemarks"
                android:layout_width="120sp"
                android:layout_height="35sp"
                android:layout_gravity="center_vertical|left"
                android:gravity="center_vertical|left"
                android:maxLength="25"
                android:saveEnabled="true"
                android:textSize="8pt" >
            </EditText>
        </TableRow>
    </TableLayout>    
</LinearLayout>

和 ListView

<ListView
   android:id="@+id/ListViewHy"
   android:layout_width="420sp"
   android:layout_height="100sp"
   android:layout_column="0"
   android:layout_span="3"
   android:clickable="true"
   android:saveEnabled="true"
   android:scrollbarSize="10sp"
   android:scrollbars="vertical" >
   </ListView>

我正在使用它来绑定(bind)我的 ListView :

private void FillGridHygiene() {
    LstViewHy = (ListView) findViewById(R.id.ListViewHy);
    clsDatabase dbh = new clsDatabase(this);
    dbh.openDataBase();
    Cursor cursor;
    cursor = dbh.getGridData("030");
    dbh.close();
    if (cursor != null) {
        int cnt = cursor.getCount();
        if (cnt > 0) {
            startManagingCursor(cursor);
            try {
                // -----------BindingListView----------------------------------------------------------------------------

                SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                        R.layout.hygiene_list, cursor, new String[] {
                                Audit_FSD_Tab.KEY_ROW_ID,
                                Audit_FSD_Tab.KEY_ID,
                                Audit_FSD_Tab.KEY_SHORT_NAME }, new int[] {
                                R.id.txt_Hy_ID, R.id.txt_HyID,
                                R.id.txt_Hy_Area });
                adapter.setViewResource(R.layout.hygiene_list);
                LstViewHy.setAdapter(adapter);
                LstViewHy.setTextFilterEnabled(true);
                LstViewHy.setFocusable(false);
                LstViewHy.setVisibility(View.VISIBLE);

            } catch (Exception ex) {
                ex.fillInStackTrace();
            }
        }

    }
}

编辑:1

API 级别 - 7 版本 - 2.1

最佳答案

问题出在 ListView 的设计上。您需要创建一个自定义适配器,并在 view holder 和 convertview 的帮助下回收您的 View 。 ListView List view using baseadapter

这将帮助您理解 ListView 的概念并给出原因 - 其他随机文本框会自动填充相同的值,当我选中复选框时,复选框会发生同样的情况,任何其他随机复选框也会自动选中。希望这会对您有所帮助,并有助于设计您的 ListView

关于android - 滚动列表时,ListView 中的 CheckBox 自动勾选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10221708/

相关文章:

android - 如何创建一个按字母顺序显示android中所有字母的滚动条?

Android改变ListView字体

android - 如何删除内部存储中的项目

android - Flaky Android Espresso 测试 - Snackbar

android - 动态 Textview 滚动条不显示

android - 动画化 ListView 中新添加的项目

Android:PullToRefresh ListView 未显示

android - 延迟加载android ExpandableListView

android - 使用 TweetComposer 在 Twitter 上分享图片?

c# - 触发ListViewItem命令