@Override
  public void onLoadFinished(Loader loader, Object data) {
    recyclerView = (RecyclerView) findViewById(R.id.store_list);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setItemAnimator(new DefaultItemAnimator());

    mStoreList = (ArrayList<Store>) data;
    mStoreAdaptor = new StoreAdapter(this, R.layout.store_layout, mStoreList);
    recyclerView.setAdapter(mStoreAdaptor);

    // Create an instance of the dialog fragment and show it
    mStoreAdaptor.SetOnItemClickListener(this);

    ItemTouchHelper.Callback callback = new ListItemTouchHelper();
    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback);
    itemTouchHelper.attachToRecyclerView(recyclerView);
    ((ListItemTouchHelper) callback)
        .SetOnItemClickListener(
            new ListItemTouchHelper.OnItemSwipeListener() {
              @Override
              public void onItemSwipe(int position) {
                mStoreDbAdapter.deleteStore(mStoreList.get(position));
                mStoreList.remove(position);
                mStoreAdaptor.notifyDataSetChanged();
                Toast.makeText(StoreListActivity.this, "position: " + position, Toast.LENGTH_SHORT)
                    .show();
              }
            });
  }
  @Override
  public void onDialogPositiveClick(DialogFragment dialog) {
    Dialog dialogView = dialog.getDialog();
    String stringName =
        ((EditText) dialogView.findViewById(R.id.dialog_store_name)).getText().toString();
    if (editIndex == -1) {
      if (!stringName.isEmpty()) {
        Store store = new Store(stringName);
        long rowId = mStoreDbAdapter.insertStore(store);
        store.setId(rowId);
        mStoreList.add(store);
      }
    } else {
      mStoreList.get(editIndex).setName(stringName);
      mStoreDbAdapter.updateStore(mStoreList.get(editIndex));
      editIndex = -1;
    }

    if (!stringName.isEmpty()) {
      mStoreAdaptor.notifyDataSetChanged();
    }
  }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   String stringName;
   super.onActivityResult(requestCode, resultCode, data);
   switch (requestCode) {
     case Constants.RESULT_SPEECH_OUTPUT:
       if (resultCode == RESULT_OK && data != null) {
         ArrayList<String> text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
         stringName = text.get(0);
         if (stringName != null && !stringName.isEmpty()) {
           Store store = new Store(stringName);
           long rowId = mStoreDbAdapter.insertStore(store);
           Log.d(LOG_TAG, "Insert ret val: " + rowId);
           store.setId(rowId);
           mStoreList.add(store);
           mStoreAdaptor.notifyDataSetChanged();
         }
       }
       break;
     default:
       Log.w(LOG_TAG, "Not handled speech resultCode");
       break;
   }
 }