0

Я последовал за руководство Android API, реализующее САВ и у меня есть несколько проблем:Android контекстной панель действий с пользовательским ListView не допуская множественный выбор

  1. Множественного выбор не существует
  2. выбранных элементов (строки) не окрашивается, чтобы указать, они выбраны
  3. Как изменить: [A] цвет САВ [B] Показать текст на САВ

выходной ток одиночный выбор, без окрашивания сырой и некоторые цвет по умолчанию для панели действий. Это мой код, где MainListAdapter является «регулярным» реализация пользовательских ListView адаптера, с настраиваемое представление для каждого элемента, и DataList это простые данные заполнить список с:

listview = (ListView)findViewById(R.id.listview); 
    listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
    listview.setMultiChoiceModeListener(new MultiChoiceModeListener() { 
     @Override 
     public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { 
      //Here you can do something when items are selected/de-selected, such as update the title in the CAB 
     } 

     @Override 
     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      //Respond to clicks on the actions in the CAB (contextual action bar) 
      switch (item.getItemId()) { 
       case R.id.menu_delete: 
        deleteSelectedItems(); 
        mode.finish(); //Action done, so close the CAB 
        return true; 
       case R.id.menu_open: 
        openSelectedItem(); 
        mode.finish(); //Action done, so close the CAB 
        return true; 
       default: 
        return false; 
      } 
     } 

     private void openSelectedItem() { 
      // TODO Auto-generated method stub 

     } 

     private void deleteSelectedItems() { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
      //Inflate the menu for the CAB 
      MenuInflater inflater = mode.getMenuInflater(); 
      inflater.inflate(R.menu.listmenu, menu); 
      return true; 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode mode) { 
      //Here you can make any necessary updates to the activity when the CAB is removed. By default, selected items are deselected/unchecked. 
      //TODO refresh the list 
     } 

     @Override 
     public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
      //Here you can perform updates to the CAB due to an invalidate() request 
      return false; 
     } 
    }); 

    listview.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) { 
      //TODO open DisplayActivity 
      Toast.makeText(getApplicationContext(), "Open File", Toast.LENGTH_LONG).show(); 
     } 
    }); 

    listAdapter = new MainListAdapter(dataList, context); 
    listview.setAdapter(listAdapter); 
+0

майкл - пожалуйста, можете ли вы добавить, какой результат и что вам нужно, чтобы помочь тем, кто отвечает. – micstr

+0

@micstr Спасибо, сделано. – michael

ответ

2

множественного выбора не существует

Selected элементы (строки), не цветные, чтобы указать, что они выбраны

Предположительно, вы не настроек activated стиля для списка ваших строк, который регулирует оба из них.

Как изменить ... цвет САВ

Пользовательская тема должна быть в состоянии сделать это. Правила должны несколько меняться в зависимости от того, используете ли вы собственную панель действий, более старые версии appcompat-v7 или текущие выпуски appcompat-v7. Есть plenty из existing Переполнение стека material на этом.

Показать некоторый текст на САВ

Существует setTitle() и setSubtitle() на ActionMode, что вы можете позвонить.

См. this sample app для демонстрации использования активированного стиля и титров/субтитров. В нем ListView находится в нормальном режиме, пока пользователь не нажимает на строку, и в этом случае он переключается на операцию с несколькими выборами.

 Смежные вопросы

  • Нет связанных вопросов^_^