如何在ListView中启用批处理上下文操作?

时间:2013-05-30 10:41:26

标签: java android

我正在尝试非常密切地关注CABforListView的官方Android指南,但是我无法长按我的ListView项目上的上下文操作视图。

public class MainActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loadList(); // loads Cursor data and sets list adapter in AsyncTask
        ListView listView = getListView();
        listView.setLongClickable(true); // no effect
        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
        listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
            // implemention of MultiChoiceModeListener
        });
    }

    // rest of the class
}

以下是我的list_row_item.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:longClickable="true"
    android:paddingLeft="15dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp"
    android:paddingBottom="10dp" >

    <TextView
        android:id="@+id/reminder_row_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/reminder_row_interval"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/reminder_row_description"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <Switch
        android:id="@+id/switch_reminder_row"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/reminder_row_interval"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/reminder_row_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/reminder_row_interval"
        android:layout_below="@+id/reminder_row_interval"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</RelativeLayout>

我的activity_main.xml:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</ListView>

我尝试使用listView.setOnItemLongClickListener()手动启动ActionMode,但是虽然已经启动了上下文操作模式,但我无法进行多次选择,也没有教程/指南需要这样做。我错过了什么。

基本上,我想达到Jelly Bean闹钟中所见的效果:

Jelly Bean Alarm Clock ListView

任何指针都将非常感谢!

1 个答案:

答案 0 :(得分:0)

基于@Luksprog注释,从onCreateActionMode()返回true将解决您的问题