@Override
  public View onCreateView(
      LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View view = inflater.inflate(R.layout.soft_tags_wall_view, container, false);
    ButterKnife.bind(this, view);

    ((AppCompatActivity) mActivity).setSupportActionBar(mToolbar);
    ((AppCompatActivity) mActivity).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ((AppCompatActivity) mActivity)
        .getSupportActionBar()
        .setHomeAsUpIndicator(R.drawable.back_arrow);
    mToolbar.setNavigationOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            // hack to get click working
            mActivity.onBackPressed();
          }
        });
    // tag name
    String tag = getArguments().getString(K.KEY_TAG.name());
    mToolbar.setTitle(tag);

    // recyclers
    mLayoutManager = new LinearLayoutManager(mActivity);
    setupRecyclerView();

    return view;
  }
  private void setupRecyclerView() {
    mRecyclerView.setLayoutManager(mLayoutManager);
    mRecyclerView.setHasFixedSize(true);

    String tag = getArguments().getString(K.KEY_TAG.name());
    Cursor cursor =
        mActivity
            .getContentResolver()
            .query(
                SchemaPosts.CONTENT_URI,
                null,
                SchemaPosts.COLUMN_SRC_SEARCH + "=?",
                new String[] {tag},
                BaseColumns._ID + " DESC");
    if (cursor.moveToFirst()) {
      mViewAdapter = new PostCursorRecyclerViewAdapter(mActivity, cursor);
    } else {
      if (cursor != null && !cursor.isClosed()) {
        cursor.close();
      }
      mViewAdapter = new PostCursorRecyclerViewAdapter(mActivity, null);
    }

    mViewAdapter.setHasStableIds(Boolean.TRUE);
    mRecyclerView.setAdapter(mViewAdapter);

    // scroll listerer on recycle view
    mRecyclerViewScrollListener =
        new EndlessRecyclerOnScrollListener(
            mLayoutManager, AppConstants.KV.LOAD_MORE.getIntValue()) {
          @Override
          public void onLoadMore(RecyclerView rv, int current_page) {
            mHandler.post(
                new Runnable() {
                  @Override
                  public void run() {
                    callForRemotePosts(Boolean.TRUE);
                  }
                });
          }
        };
    reInitializeScrollListener(mRecyclerView);

    // STYLE :: DIVIDER
    mRecyclerView.addItemDecoration(new SimpleDividerItemDecoration(mActivity));
  }
 private void reQueryLocal() {
   try {
     String tag = getArguments().getString(K.KEY_TAG.name());
     Cursor cursor =
         mActivity
             .getContentResolver()
             .query(
                 SchemaPosts.CONTENT_URI,
                 null,
                 SchemaPosts.COLUMN_SRC_SEARCH + "=?",
                 new String[] {tag},
                 BaseColumns._ID + " DESC");
     if (cursor.getCount() > 0) {
       int beforeIdx = mLayoutManager.findFirstVisibleItemPosition();
       mViewAdapter.changeCursor(cursor);
       mViewAdapter.notifyDataSetChanged();
     } else {
       cursor.close();
     }
   } catch (Exception e) {
     // muted;
   }
 }
  private void callForRemotePosts(boolean isPaginating) {
    String tag = getArguments().getString(K.KEY_TAG.name());

    // construct context from preferences if any?
    Bundle iArgs = new Bundle();

    if (isPaginating) {
      Object _state = mRecyclerView.getTag();
      // prevent unnecessary traffic
      if (_state != null && (_state instanceof Utils.State)) {
        if (((Utils.State) _state).isPendingLoadMore()) {
          return;
        }
      }

      Utils.State state = new Utils.State();
      state.setPendingLoadMore(true);
      mRecyclerView.setTag(state);

      //            Utils.PreferencesManager pref = Utils.PreferencesManager.getInstance();
      //            Map<String, String> entries =
      // pref.getValueAsMap(AppConstants.API.PREF_POSTS_LIST_USER.getValue());
      //            for (Map.Entry<String, String> e : entries.entrySet()) {
      //                iArgs.putString(e.getKey(), e.getValue());
      //            }
    }

    // context
    iArgs.putString(KEY_BY.getValue(), KEY_POSTS_SEARCH.getValue());
    iArgs.putString(KEY_KEY.getValue(), tag);

    // call for intent
    Intent mServiceIntent = new Intent(mActivity, PostsPullService.class);
    mServiceIntent.putExtras(iArgs);
    mActivity.startService(mServiceIntent);
  }