title: Highlighting the list rows
body: <p>I'm having an issue with a long press on a row to get highlighted. </p>
  
  <p>I looked over how to handle the single click to lead to another activity and a long press to get the contextual action bar comes up. I decided to switch the listview choice by ListView.CHOICE_MODE_MULTIPLE_MODAL and ListView.CHOICE_MODE_NONE to let the built in android methods to do their work on selected rows.  The single click is working as it is intended. 
   The multiple modal is working and the contextual action bar is showing the number of the notes selected yet the rows aren't highlighted.  I have checked the theme and it doesn't work either for Theme.AppCompat and Theme.AppCompat.Light. </p>
  
  <p>Here are the code - </p>
  
  <p>Classes</p>
  
  <pre><code>MainActivity extends AppCompatActivity {}
  
  ObjectListFragment extends ListFragment implements
      AdapterView.OnItemLongClickListener, AbsListView.MultiChoiceModeListener {}
  
  NoteListAdapter extends ArrayAdapter&lt;NoteTO&gt; {}
  </code></pre>
  
  <p>initialization of listeners and other objects in ListFragment</p>
  
  <pre><code>//get the data
  @Override
  public void onViewCreated(View view, Bundle savedInstanceState) {
      super.onViewCreated(view, savedInstanceState);
      LogUtils.LOGD(getClass().getSimpleName(), "onViewCreated");
  
      ListView listView = getListView();
      listView.setOnItemLongClickListener(this);
      listView.setMultiChoiceModeListener(this);
  
      int choiceMode = (savedInstanceState == null ? ListView.CHOICE_MODE_NONE : savedInstanceState.getInt(STATE_CHOICE_MODE));
      listView.setChoiceMode(choiceMode);
  }
  </code></pre>
  
  <p>Action mode methods, long press method and private methods</p>
  
  <pre><code>@Override
  public void onListItemClick(ListView l, View v, int position, long id) {
      l.setItemChecked(position, true);
  
      NoteTO note = (NoteTO) l.getItemAtPosition(position);
      Intent i = new Intent(getActivity(), NoteActivity.class);
      NotePreferences.setNote(getActivity(), note);
      AppPreferences.setActionFlag(getActivity(), AppConstants.ACTION_UPDATE);
      startActivityForResult(i, 1);
  }
  
  @Override
  public void onItemCheckedStateChanged(ActionMode actionMode, int i, long l, boolean b) {
      if (mActiveMode != null) {
          updateSubtitle(actionMode);
      }
  }
  
  @Override
  public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
      MenuInflater inflater = getActivity().getMenuInflater();
      inflater.inflate(R.menu.contextual_menu, menu);
  
      this.mActiveMode = actionMode;
      updateSubtitle(mActiveMode);
  
      return true;
  }
  
  @Override
  public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
      return false;
  }
  
  @Override
  public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
      boolean result = performActions(menuItem);
  
      updateSubtitle(mActiveMode);
  
      return(result);
  }
  
  @Override
  public void onDestroyActionMode(ActionMode actionMode) {
      if (mActiveMode != null) {
          mActiveMode = null;
          getListView().setChoiceMode(ListView.CHOICE_MODE_NONE);
          getListView().setAdapter(getListView().getAdapter());
      }
  }
  
  public boolean performActions(MenuItem item) {
      List&lt;NoteTO&gt; list = listAdapter.getList();
      Set&lt;Integer&gt; positionSet = listAdapter.getCurrentCheckedPosition();
      Integer[] positions = listAdapter.getCurrentCheckedPosition().toArray(new Integer[positionSet.size()]);
  
      if(item.getItemId() == R.id.item_delete) {
          List&lt;NoteTO&gt; notesToBeDeleted = new ArrayList&lt;NoteTO&gt;();
          String text = "";
  
          for(int i = 0; i &lt; positions.length; i++) {
              NoteTO note = (NoteTO) list.get(positions[i]);
              notesToBeDeleted.add(note);
          }
          task = new ObjectListFragment.deleteNotesTask().execute(notesToBeDeleted);
          return true;
      }
  
      else if(item.getItemId() == R.id.item_share) {
          String text = "";
  
          for(int i = 0; i &lt; positions.length; i++) {
              NoteTO note = (NoteTO) list.get(positions[i]);
              text = text + note.getBody() + "\r\n"+ "\r\n";
          }
          shareNotes(text);
          return true;
      }
  
      return false;
  }
  
  private void updateSubtitle(ActionMode mode) {
      mode.setSubtitle("(" + getListView().getCheckedItemCount() + ")");
  }
  
  @Override
  public boolean onItemLongClick(AdapterView&lt;?&gt; adapterView, View view, int position, long id) {
  
      getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
      getListView().setItemChecked(position, true);
  
      return(true);
  }
  </code></pre>
  
  <p>Adapter - there isn't any code that overwrite up the selectors of the rows. </p>
  
  <pre><code>@NonNull
  @Override
  public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
      View row = super.getView(position, convertView, parent);
      NoteHolder holder = (NoteHolder) row.getTag();
  
      if(holder == null) {
          holder = new NoteHolder(row);
          row.setTag(holder);
      }
  
      NoteTO note = getItem(position);
  
      if(mSettings.getListSingleLine() == 0) {
          holder.textviewNote.setEllipsize(null);
          holder.textviewNote.setSingleLine(false);
      }
      else {
          holder.textviewNote.setEllipsize(TextUtils.TruncateAt.END);
          holder.textviewNote.setSingleLine();
      }
  
      holder.textviewNote.setText(note.getBody());
      holder.textviewNote.setTextSize(getmSettings().getListViewTextSize());
      holder.textviewNote.setTypeface(getmSettings().getGeneralFontStyleTypeFace());
      //holder.textviewNote.setBackgroundColor(ContextCompat.getColor(context, android.R.color.background_dark));
      //holder.textviewNote.setBackground(selector);
  
      //arraylist has containers to get the boolean of the position
      if (mSelection.get(position) != null) {
  
          //holder.textviewNote.setSelected(true);
          //holder.textviewNote.setBackgroundColor(ContextCompat.getColor(context, android.R.color.holo_blue_light));
          //holder.textviewNote.setTextColor(mSettings.getListViewTextColor());
          //holder.textviewNote.setBackground(selector);
      }
  
      return row;
  }
  </code></pre>