2011-04-29 21 views
0

我为我的ListView实现了一个自定义适配器,其中包括每行中的CheckBox。ListView中的CheckBox侦听器的业务逻辑

因为我在我的自定义适配器中有我的点击监听器,所以我不得不在那里实现我的业务逻辑(也就是说,单击CheckBox时会发生什么......访问数据库等)。

这是正确的吗?在自定义适配器之外实现业务逻辑不是更好的做法吗? (我认为适配器应该只关心可视化)。

回答

0

尝试this..hope它可以帮助你

lv_Archiveist.setOnItemClickListener(new OnItemClickListener(){ 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, 
        long id) { 
       // TODO Auto-generated method stub 
       if(view.findViewById(R.id.chkbox).isChecked()) 
       { 
       //your method// 
        //you can also get the position of your selected checkbox by the parameter "position" 
       } 
+0

但是“你的方法”是自定义适配器内部的一种方法,不是吗?它应该在定制适配器之外。 – 2011-04-29 10:39:13

+0

它在活动类和lv_Archiveist是一个ListView – 2011-04-29 10:40:41

+0

在我的问题中,我指的是自定义列表适配器(它扩展了ArrayAdapter),并且我已经实现的业务逻辑在getView方法内。所以我的问题是,我可以把它放在自定义适配器之外吗?怎么样?我怎么称呼它? – 2011-04-29 10:52:17

0

我只会标记CheckBox点击的项目,并执行所有关于不同按钮点击的逻辑,这些点击将在ListView之外(类似于iPhone处理编辑表格的方式)。我不记得CheckBox本身用于执行某些操作的情况。

+0

问题是我怎么能叫一些方法超出了我的列表适配器? – 2011-04-29 08:27:33

+0

这是一个问题吗?在你的适配器的类中定义这个公共方法,你就可以在你的适配器的对象上调用它,例如通过从listView'((YourCustomAdapter)listView.getAdapter())获取它。doSomethingWithCheckedItems();' – ernazm 2011-04-29 08:32:01

+0

好吧,那会适用于批量处理所有检查项目。但是,每次检查单个项目时,你怎么做? – 2011-04-29 10:36:45