如何在ListActivity中获取正确的视图,为Android中的CheckBox小部件设置OnCheckedChangeListener

时间:2010-12-22 04:00:35

标签: android checkbox listactivity

我有一个ListActivity,它会为每一行显示三个小部件。其中一个是复选框。

public class GroceryItems extends ListActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.grocery_items_list);
 setUpData();
}

在我的setUpData()中,我使用的是SimpleAdapter(这是一个测试用例)。

private void setUpData(){
// generate the maps
String[] from = new String[] {"checked", "item_name","quantity"};
int[] toDisplay = new int[] {R.id.checkbox1, R.id.text1, R.id.text2};

List<HashMap<String, Object>> fillMaps = new ArrayList<HashMap<String, Object>>();

for(int i = 0; i < 20; i++){
HashMap<String, Object> map = new HashMap<String, Object>();
if(i==3){
map.put("checked", false);
}
else{
map.put("checked", true);
}
  map.put("item_name", items[i]);
  map.put("quantity","3");

  fillMaps.add(map);
}
ListView lv= getListView();


    SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.common_rowitem, from, toDisplay);
    lv.setAdapter(adapter);

    CheckBox cb = (CheckBox) lv.findViewById(R.id.checkbox1);
    cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton cb, boolean isChecked) {            
            if(cb.isChecked()) {                    
                // action
            }
            else {
                // action
            }
        }           
    });


 }

在findViewById上,我总是返回null并且无法添加侦听器。我也试过使用视图绑定器

   adapter.setViewBinder(new SimpleAdapter.ViewBinder() {

   public boolean setViewValue(View view, Object data,
 String textRepresentation) {
if (view.getId()==R.id.checkbox1){
  CheckBox cb = (CheckBox) view;
  if (data != null){
   cb.setChecked((Boolean)data);
   return true;
  }
}
 return false;
 }
    });

这也无法安装处理程序。

以下是两个布局视图

grocery_items_list.xml

<?xml version="1.0" encoding="utf-8"?>

<ListView android:id="@+id/android:list"
      android:layout_width="wrap_content"
     android:layout_height="wrap_content"/>

common_rowitem.xml

<?xml version="1.0" encoding="utf-8"?>

              

感谢任何建议或帮助。

0 个答案:

没有答案