相关疑难解决方法(0)

退出选择模式后,ListView选择保持不变

我有一个ListView子类,我允许在上下文操作栏(CAB)处于活动状态时进行选择.CAB被设置为onItemLongClick事件的回调:

public boolean onCreateActionMode(ActionMode mode, Menu menu) {
    // Inflate a menu resource providing context menu items
    MenuInflater inflater = mode.getMenuInflater();
    inflater.inflate(context_menu, menu);
    getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这很好,ListView按预期工作,当前选定的项目在触摸时保持突出显示.

当我关闭CAB时,我希望ListView恢复正常(即触摸模式).问题是最后选择的项目会无限期地突出显示,无论我尝试清除它的方法是什么:

public void onDestroyActionMode(ActionMode mode) {
    //Unselect any rows
    ListView lv = getListView();
    lv.clearChoices(); // Has no effect
    lv.setChoiceMode(ListView.CHOICE_MODE_NONE); // Has no effect on the highlighted item 
    lv.setFocusable(false); // Has no effect
    lv.setSelection(0); // Has no effect
    mActionMode = null;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

java android android-listview

41
推荐指数
3
解决办法
2万
查看次数

使用CAB在自定义ListView中进行多项选择

看完并试着好几天后,我放弃了并寻求帮助.

<edit>我正在使用ActionBarSherlock.</ edit>

我想要实现的目标: 一个ListView,每行有一个自定义布局,用户可以在其中选择多个列表项.选定的列表项应具有不同的背景颜色.如果至少选择了一个项目,则应显示上下文操作栏(CAB).它应该或多或少看起来像GMail应用程序中的多个电子邮件选择.唯一的区别是,在gmail应用程序中,通过单击行的复选框来完成选择,而我不希望有一个复选框,但无论用户单击的位置,都应该选择一行. GMail应用程序中的多个选择

我尝试过:本教程中,使用Checkable行布局和一些逻辑来在切换检查状态时更改背景颜色,我得到了一切正常工作,除了我无法在ListView上注册像OnItemClickListener这样的点击监听器来显示CAB .既没有为每一行View提供点击监听器也有帮助,因为这阻止了更改所选项目的背景颜色.我也尝试将MultiChoiceModeListener添加到ListView中

    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
    listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { //.. });
Run Code Online (Sandbox Code Playgroud)

结果相同,没有背景颜色变化.

我在寻找:提示或教程或示例代码如何做到这一点.如果您需要一些代码片段来提供帮助,请告诉我们.

android android-listview

29
推荐指数
3
解决办法
3万
查看次数

Android兼容性上下文操作栏

在尝试遵循Android设计指南时,我遇到了一个小小的困境.

我希望有一个项目列表,我可以长按几个(多选),然后对它们执行批量操作.

设计指南建议使用Contextual Action Bar,这听起来就像我想到的那样.问题是,我正在努力保持与API 7的兼容性(由于我的手机目前是2.3.3).

我正在使用ActionBarSherlock获取其他操作栏的东西,但我似乎无法弄清楚如何启动它以启动上下文操作栏,也没有弄清楚如何将任意按钮添加到ABS中的ActionBar.我看到你可以做标签,所以也许这就是答案,但是因为我试图允许多选,我不想拥有正常的模态上下文菜单.

android actionbarsherlock contextual-action-bar

25
推荐指数
2
解决办法
2万
查看次数

MultiChoiceModeListener导致SherlockListFragment出现问题

所以,我正在阅读这个早先的问题,想知道如何让我点击列表中的项目来执行一个操作,或者长按该项目以切换到ActionMode,我可以在其中选择多个项目并使用ActionBar执行某些操作到那些项目.但是,我对这个答案疑问.具体来说,我将其实现为SherlockListFragment(使用ActionBarSherlock).但是,当我声明一个新的MultiChoiceModeListener时,Eclipse会抛出一些编译错误.

Description Resource    Path    Location    Type
Cannot override the final method from SherlockListFragment  DateTimeListFragment.java   /path/to/my/project line 127    Java Problem
The method inflate(int, Menu) in the type MenuInflater is not applicable for the arguments (int, Menu)  DateTimeListFragment.java   /path/to/my/project line 125    Java Problem
Run Code Online (Sandbox Code Playgroud)

当我删除MultiChoiceModeListener时,这些消失了.我不知道是什么原因造成的,因为我知道并没有什么奇怪的事情发生.

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
    {
        //super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.alarmsmenu, menu); //line 125
    }
    public boolean onOptionsItemSelected(MenuItem Item) //line 127
    {
        switch(Item.getItemId())
        {
        case R.id.addAlarm:
            addAlarm();
            return true;
        case R.id.editAlarms:
            return true; …
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock android-actionbar android-listfragment

7
推荐指数
1
解决办法
3154
查看次数

可检查的相对布局作为多选列表中的项目

我有Android应用程序列表视图,选择模式设置为多选模式.

此列表中的项目定义为相对布局.

如何在选择项目时更改项目的背景?

项目xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:checkable="true"
    android:background="@drawable/my_item_background"
Run Code Online (Sandbox Code Playgroud)

我的项目背景xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@color/mycolor1" android:state_selected="true"/>
    <item android:drawable="@color/mycolor2" android:state_checked="true"/>
    <item android:drawable="@android:color/black"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

物品的背景总是黑色的.

android listview

4
推荐指数
1
解决办法
3931
查看次数