【问题标题】:Editable ListView in Android - as is in iOSAndroid 中的可编辑 ListView - 与 iOS 中一样
【发布时间】:2011-10-24 19:56:21
【问题描述】:

如何在 iPhone 上创建类似可编辑 UITableView 的东西?

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

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

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

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

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

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

【问题讨论】:

  • 可能调用了 notifyDataSetChanged(使所有视图无效)?
  • 2年半后还是一无所获

标签: android


【解决方案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);
    }

【讨论】:

  • 是的,但我不能用这种方法一次删除多个项目
【解决方案2】:

您可能需要先查看此内容,如果没有 EFFECIENT ADAPTER ... 在其 onListItemClick() 中,您可以根据所选视图执行您的操作...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-19
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    相关资源
    最近更新 更多