2011-06-18 78 views
1

我实现了一个带有三列的ListView,第一个是Textview,第二个也是TextView,第三个是CheckBox。带有复选框的ListView有问题

所有的事情都做得很好,它正好在布局文件中显示,因为我想要的。

但两个问题我面对

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(); 
      } 
     }); 

项目。 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> 
+0

嘿,可以给我一些事情做到这一点 –

回答

1

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

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

+0

可以请你给我代码我怎么做到这个 –

+0

ok给我你的个人电子邮件ID我会发送代码德。因为它会有点大 –