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