【问题标题】:ListView With Checkboxes have problemListView With Checkboxes 有问题
【发布时间】:2011-06-18 11:24:38
【问题描述】:

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

一切都很好,它完全按照我的意愿显示在布局文件中。

但我面临两个问题

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

2) listview.setOnItemClickListener(new OnItemClickListener(){}),这个函数没有调用。

我想在单击 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();
            }
        });

item.xml 文件是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:orientation="vertical"
  android:background="#FFFFFF"
  android:layout_height="fill_parent">
    <LinearLayout
        android:layout_margin="15dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="#FFFFFF"
        android:orientation="horizontal"
        android:id="@+id/linearLayout1">
        <LinearLayout 
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_width="fill_parent"
            android:layout_gravity="center"
            android:padding="5dip"
            android:paddingRight="0dip"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtnameItem"
                android:textSize="20px"
                android:textStyle="bold"
                android:text="col_1"
                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="fill_parent"
            android:layout_weight="1"
            android:textStyle="bold"
            android:id="@+id/linearLayout2">
            <TextView
                android:id="@+id/txtpriceItem"
                android:gravity="left"
                android:layout_gravity="center"
                android:text="col_2"
                android:layout_weight="1"
                android:textSize="20px"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            </TextView>
            <CheckBox
                android:gravity="right"
                android:layout_weight="1"
                android:text=""
                android:textColor="#000000"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:layout_gravity="right|center"
                android:checked="false"
                android:id="@+id/chkboxItem">
            </CheckBox>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

最后是 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>

【问题讨论】:

  • 嘿,可以帮我做点什么

标签: android


【解决方案1】:

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

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

【讨论】:

  • 好的,给我您的个人电子邮件 ID,我将发送代码 der。因为它会有点大
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2011-01-02
  • 1970-01-01
  • 2020-03-03
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多