Android 带有复选框的ListView有问题

Android 带有复选框的ListView有问题,android,Android,我实现了一个包含三列的ListView,第一列是Textview,第二列也是Textview,第三列是CheckBox 一切都做得很好,它完全显示在布局文件,因为我想 但我面临两个问题 1) 当我滚动屏幕以显示完整列表时,复选框选中或未选中状态将自动替换 2) setOnItemClickListener(新的OnItemClickListener(){}),此函数未调用 我想在单击listView中的任何项目时选中复选框 然后有一个按钮来提交listview的所有选中状态,我该怎么做 list

我实现了一个包含三列的ListView,第一列是Textview,第二列也是Textview,第三列是CheckBox

一切都做得很好,它完全显示在布局文件,因为我想

但我面临两个问题

1) 当我滚动屏幕以显示完整列表时,复选框选中或未选中状态将自动替换

2) setOnItemClickListener(新的OnItemClickListener(){}),此函数未调用

我想在单击listView中的任何项目时选中复选框

然后有一个按钮来提交listview的所有选中状态,我该怎么做

listview=(ListView)findViewById(R.id.listview);
        // create the grid item mapping
        String[] from = new String[] {"col_1","col_2"};
        int[] to = new int[] { R.id.txtnameItem, R.id.txtpriceItem};

        // prepare the list of all records
        List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
        for(int i = 0; i <items.length; i++)
        {
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("col_1",items[i]);
            map.put("col_2",price[i]);
            fillMaps.add(map);
        }
        SimpleAdapter adapter=new SimpleAdapter(this, fillMaps, R.layout.item, from, to);
        listview.setAdapter(adapter);
        listview.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parentView, View v, int position,long id) 
            {
                Log.d("Inside onClilck log","Yes");
                Toast.makeText(v.getContext(),""+position,Toast.LENGTH_LONG).show();
            }
        });
listview=(listview)findViewById(R.id.listview);
//创建网格项映射
字符串[]from=新字符串[]{“col_1”、“col_2”};
int[]to=newint[]{R.id.txtnameItem,R.id.txtpriceItem};
//准备所有记录的清单
List fillMaps=new ArrayList();
对于(int i=0;i
最后是main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">
    <!-- Header -->
    <LinearLayout android:id="@+id/header"
        android:background="#FFFFFF"
        android:padding="10dip"
        android:orientation="horizontal"
        android:paddingBottom="5dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        >
        <TextView android:id="@+id/heading"
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Items"
            android:gravity="left"
            android:layout_weight="1"
            android:textColor="#CC6633"
            android:textSize="25px"
            android:textStyle="bold"
        />
        <Button
            android:text="Add To Order"
            android:id="@+id/btnOrder"
            android:layout_weight="1"
            android:textSize="15px"
            android:gravity="right"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
    <LinearLayout android:id="@+id/header"
        android:background="#FFFFFF"
        android:padding="5dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        >
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_gravity="center"
            android:padding="5dip"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtnameItem"
                android:text="Name"
                android:gravity="left"
                android:textColor="#000000"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </TextView>
        </LinearLayout>
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:padding="5dip"
            android:gravity="left"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtpriceItem"
                android:gravity="left"
                android:text="Price"
                android:layout_weight="1"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_gravity="left">
            </TextView>
            <TextView
                android:id="@+id/txtorderItem"
                android:gravity="right"
                android:text="Order"
                android:layout_weight="1"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right">
            </TextView>
        </LinearLayout>
    </LinearLayout>

    <!-- List Divider -->
    <View android:layout_width="fill_parent"
        android:layout_height="5dip"
        android:background="#C85A17" />

    <!-- ListView (list_items) -->
    <LinearLayout android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:orientation="vertical"
        android:layout_height="wrap_content">
        <ListView android:id="@+id/listview"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:layout_width="fill_parent">
        </ListView>
    </LinearLayout>
</LinearLayout>

我建议不要让它成为一个简单的适配器,而是让它成为一个从基本适配器扩展而来的定制适配器


然后更改listview.setOnItemClickListener.中某行复选框的状态(开/关),并通过适配器调用notifyDataSetChanged()。

我建议不要将其设置为SimplePater,而是将其设置为从基本适配器扩展而来的自定义适配器


然后更改listview.setOnItemClickListener.中某行复选框的状态(开/关),并调用notifyDataSetChanged()通过适配器。

嘿,可以给我一些事情做吗嘿,可以给我一些事情做吗?给我你的个人电子邮件id,我会发送密码。因为它会有点大。给我你的个人电子邮件id,我会发送密码。因为它会有点大
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">
    <!-- Header -->
    <LinearLayout android:id="@+id/header"
        android:background="#FFFFFF"
        android:padding="10dip"
        android:orientation="horizontal"
        android:paddingBottom="5dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        >
        <TextView android:id="@+id/heading"
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Items"
            android:gravity="left"
            android:layout_weight="1"
            android:textColor="#CC6633"
            android:textSize="25px"
            android:textStyle="bold"
        />
        <Button
            android:text="Add To Order"
            android:id="@+id/btnOrder"
            android:layout_weight="1"
            android:textSize="15px"
            android:gravity="right"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
        </Button>
    </LinearLayout>
    <LinearLayout android:id="@+id/header"
        android:background="#FFFFFF"
        android:padding="5dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        >
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_gravity="center"
            android:padding="5dip"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtnameItem"
                android:text="Name"
                android:gravity="left"
                android:textColor="#000000"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
            </TextView>
        </LinearLayout>
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:padding="5dip"
            android:gravity="left"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtpriceItem"
                android:gravity="left"
                android:text="Price"
                android:layout_weight="1"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_gravity="left">
            </TextView>
            <TextView
                android:id="@+id/txtorderItem"
                android:gravity="right"
                android:text="Order"
                android:layout_weight="1"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right">
            </TextView>
        </LinearLayout>
    </LinearLayout>

    <!-- List Divider -->
    <View android:layout_width="fill_parent"
        android:layout_height="5dip"
        android:background="#C85A17" />

    <!-- ListView (list_items) -->
    <LinearLayout android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:orientation="vertical"
        android:layout_height="wrap_content">
        <ListView android:id="@+id/listview"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:layout_width="fill_parent">
        </ListView>
    </LinearLayout>
</LinearLayout>