2011-08-11 16 views
0

如何在iPhone上创建类似可编辑UITableView的东西?Android中的可编辑ListView - 与iOS中一样

我需要能够将列表切换到编辑模式,然后选择多个项目,然后执行操作 - 删除,移动到另一个列表。

如果没有内置或开源替代方案,我可能需要自己编写代码。

我认为我可以在每个ListView项目的XML布局中添加一个(在第一个不可见的)复选框,并且在用户单击“编辑”之后,我会在列表适配器中设置一个标志以使复选框可见并且显示移动和删除按钮。

当用户点击移动/删除按钮时,我会以某种方式收集检查项目的索引(请参阅this answer)并执行操作。

如果用户退出编辑模式,我会让复选框再次消失。

我的问题是,我将如何修改列表视图中的所有项目以显示复选框?我可以在我的适配器中设置一个标志,并在getView中设置该复选框的可见性。但是,我将如何强制listview获取所有视图(为每个视图调用getView) - 使其失效?

enter image description here

+0

也许调用notifyDataSetChanged(使所有视图无效)? – njzk2

+0

2年半后仍然没有任何信息 – Axarydax

回答

1

您可以使用内容菜单像这些教程:

http://www.miximum.fr/tutos/849-porting-the-contextual-anction-mode-for-pre-honeycomb-android-apps

http://androidfornewbies.blogspot.com/2012/05/14-tutorial-using-contextual-action.html

http://wptrafficanalyzer.in/blog/creating-a-contextual-menu-bar-contextual-action-mode-for-a-single-view-in-android/

编辑:

可以删除多个在第一环节,这里是一个快速的代码,应该删除所有选定的项目。

List<String> titles = new ArrayList<String>(); 

... 

SparseBooleanArray checked = mListView.getCheckedItemPositions(); 

    for (int i = 0 ; i < checked.size(); i++) { 
     if(checked.valueAt(i)) 
     //delete that item from the source array of the listView 
     // then notify the adapter with change. 
     titles.remove(i); 
    } 
+0

是的,但我无法一次删除多个项目,使用该方法 – Axarydax

+1

请参阅上面的编辑。 –

0

你可能要看看这个第一,如果没有EFFECIENT ADAPTER ......在onListItemClick()你可以做你的东西,根据选择的视图...