2013-09-09 3 views
0

Я не знаю, что мне нужно сделать для реализации выбранного ListView и показать выбранные элементы в панели действий. Я предполагаю, что есть собственный и быстрый способ сделать это, но я не знаю, как его искать! Может ли кто-нибудь мне помочь?Деятельность с возможностью выбора ListView и ActionBar в Android

enter image description here

ответ

2

Вы найдете образец под образцы вашего SDK

android-sdk-linux/samples/android-17/ApiDemos/src/com/example/android/apis/view/List16 

Используйте ниже для справки и изменить его соответствующим образом.

активность

public class MainActivity extends ListActivity { 
    String[] GENRES = new String[] { 
      "Action", "Adventure", "Animation", "Children", "Comedy", 
     "Documentary", "Drama", 
      "Foreign", "History", "Independent", "Romance", "Sci-Fi", 
     "Television", "Thriller" 
     }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ListView lv = getListView(); 
     lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
     lv.setMultiChoiceModeListener(new ModeCallback()); 
     setListAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_activated_1, GENRES)); 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     getActionBar().setSubtitle("Long press to start selection"); 
    } 

    private class ModeCallback implements ListView.MultiChoiceModeListener { 

     public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.list_select_menu, menu); 
      mode.setTitle("Select Items"); 
      return true; 
     } 

     public boolean onPrepareActionMode(ActionMode mode, Menu menu) { 
      return true; 
     } 

     public boolean onActionItemClicked(ActionMode mode, MenuItem item) { 
      switch (item.getItemId()) { 
      case R.id.share: 
       Toast.makeText(MainActivity.this, "Shared " + getListView().getCheckedItemCount() + 
         " items", Toast.LENGTH_SHORT).show(); 
       mode.finish(); 
       break; 
      default: 
       Toast.makeText(MainActivity.this, "Clicked " + item.getTitle(), 
         Toast.LENGTH_SHORT).show(); 
       break; 
      } 
      return true; 
     } 

     public void onDestroyActionMode(ActionMode mode) { 
     } 

     public void onItemCheckedStateChanged(ActionMode mode, 
       int position, long id, boolean checked) { 
      final int checkedCount = getListView().getCheckedItemCount(); 
      switch (checkedCount) { 
       case 0: 
        mode.setSubtitle(null); 
        break; 
       case 1: 
        mode.setSubtitle("One item selected"); 
        break; 
       default: 
        mode.setSubtitle("" + checkedCount + " items selected"); 
        break; 
      } 
     } 

    } 
} 

list_select_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/share" 
      android:title="share" 
      android:icon="@android:drawable/ic_menu_share" 
      android:showAsAction="always" /> 
</menu> 

Под RES/значения-v11/styles.xml. С помощью этого параметра выбранный элемент будет иметь синий цвет.

<resources> 

    <style name="AppTheme" parent="android:Theme.Holo.Light"></style> 

    <style name="activated" parent="AppTheme"> 
     <item name="android:background">?android:attr/activatedBackgroundIndicator</item> 
    </style> 

</resources> 

Добавить стиль в корневой элемент вашего макета.

style="@style/activated" 

Snap Shot

enter image description here