private void haveGooglePlayServices() {
   if (polyMergedList.getTasksService() == null) {
     // TODO: New authentication ?
     Log.e("haveGooglePlayServices", "Not implement new authentication");
     chooseAccount();
   } else {
     if (polyMergedList != null && !polyMergedList.isLoaded()) {
       //                AsyncLoadTasks.run(this, polyMainList);
     } else {
       if (polyTodoItems == null) {
         polyTodoItems = polyMergedList.getGlobalTodoItems();
       }
       refreshView();
     }
   }
 }
 private boolean startListActivity(int num) {
   try {
     Intent intent = new Intent(this, PolyListActivity.class);
     intent.putExtra(List_ID, polyMergedList.getPolyTodoListId(num));
     startActivity(intent);
     overridePendingTransition(R.anim.abc_slide_in_bottom, 0);
   } catch (IndexOutOfBoundsException e) {
     e.printStackTrace();
     return false; // ???
   }
   return true;
 }
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    switch (id) {
      case R.id.action_insert:
        // TODO: Add function
        // If an item is not selected, add last.
        // If an item is selected, insert next the item.
        //                View selectedView = adapter.getSelectedView();
        //                adapter.getPosition(selectedView.getContext());
        //                if (selectedView == null) {
        //                    polyMainList.addTodoList(selectedView);
        //                }
        return true;
      case R.id.action_add:
        // TODO: Ask user which list the new item is added to.
        // show chooser to select list
        //                item.setEnabled(false);
        //                disabledMenuItems.add(item);
        String listId = polyMergedList.getPolyTodoListId(0); // test
        polyMergedList.addTodoItem(listId);
        setPolyTodoItems(polyMergedList.getGlobalTodoItems());
        adapter.notifyDataSetChanged(); // TODO: work???
        return true;
        //            case R.id.action_remove:
        //                // TODO: Remove function
        //                return true;
      case R.id.action_list_01:
        return startListActivity(0);
      case R.id.action_list_02:
        return startListActivity(1);
        //            case R.id.action_settings:
        //                return true;
    }

    return super.onOptionsItemSelected(item);
  }
  // ===========================================
  // LIFECYCLE
  // ===========================================
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_poly_main_list);

    // ListView
    listView = (ListView) findViewById(R.id.listViewPolyList);
    listView.setOnItemClickListener(
        new AdapterView.OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
            Log.d("PolyMergedListActivity", "ListView.onItemClick is called.");
            boolean isSuccess = polyMergedList.moveUpGlobalTask(position);
            if (isSuccess) {
              polyTodoItems = polyMergedList.getGlobalTodoItems();
              refreshView();
            }
          }
        });
    listView.setOnItemLongClickListener(
        new AdapterView.OnItemLongClickListener() {
          @Override
          public boolean onItemLongClick(
              AdapterView<?> adapterView, View view, int position, long idl) {
            Log.d("PolyMergedListActivity", "ListView.onItemLongClick is called.");
            boolean isSuccess = polyMergedList.moveDownGlobalTask(position);
            if (isSuccess) {
              polyTodoItems = polyMergedList.getGlobalTodoItems();
              refreshView();
            }
            return true; // true: consume this event here
          }
        });

    // PolyMainList
    polyMergedList = PolyMergedListImpl.getInstance();
    polyMergedList.setOnListChanged(
        new OnMergedListChangedListener() {
          @Override
          public void mainListChanged() {
            //                polyTodoItems = polyMainList.getGlobalTodoItems();
            //                adapter.insert();
            //                refreshView();
          }
        });

    //        disabledMenuItems = new ArrayList<>();
  }
 // ----------
 public Tasks getService() {
   return polyMergedList.getTasksService();
 }