Example usage for android.widget GridView AUTO_FIT

List of usage examples for android.widget GridView AUTO_FIT

Introduction

In this page you can find the example usage for android.widget GridView AUTO_FIT.

Prototype

int AUTO_FIT

To view the source code for android.widget GridView AUTO_FIT.

Click Source Link

Document

Creates as many columns as can fit on screen.

Usage

From source file:net.reichholf.dreamdroid.fragment.ServiceListFragment.java

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.dual_list_view, null, false);

    mEmpty = v.findViewById(android.R.id.empty);

    mNavList = (ListView) v.findViewById(android.R.id.list);
    mDetailList = (AbsListView) v.findViewById(R.id.list2);

    // Some may call this a Hack, but I think it a proper solution
    // On devices with resolutions other than xlarge, there is no second
    // ListView (@id/listView2).
    // So we just use the only one available and the rest will work as
    // normal with almost no additional adjustments.
    if (mDetailList == null) {
        mDetailList = mNavList;/*from   ww  w. j  a  va  2s. com*/
        mDetailItems = mNavItems;
    }
    if (GridView.class.isInstance(mDetailList)) {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActionBarActivity());
        ((GridView) mDetailList).setNumColumns(Integer.parseInt(
                prefs.getString(DreamDroid.PREFS_KEY_GRID_MAX_COLS, Integer.toString(GridView.AUTO_FIT))));
    }

    mNavList.setFastScrollEnabled(true);
    mDetailList.setFastScrollEnabled(true);

    PauseOnScrollListener listener = new PauseOnScrollListener(ImageLoader.getInstance(), false, true);
    mDetailList.setOnScrollListener(listener);

    mSlidingPane = (SlidingPaneLayout) v.findViewById(R.id.sliding_pane);
    mSlidingPane.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() {
        @Override
        public void onPanelSlide(View panel, float slideOffset) {
        }

        @Override
        public void onPanelOpened(View panel) {
            mNavList.setEnabled(true);
        }

        @Override
        public void onPanelClosed(View panel) {
            mNavList.setEnabled(false);
        }
    });

    if (mDetailReference == null || "".equals(mDetailReference))
        mSlidingPane.openPane();

    setAdapter();
    return v;
}

From source file:org.videolan.vlc2.gui.video.VideoGridFragment.java

private void updateViewMode() {
    if (getView() == null || getActivity() == null) {
        Log.w(TAG, "Unable to setup the view");
        return;//from  w ww  .  ja va2s  . c om
    }

    // Compute the left/right padding dynamically
    DisplayMetrics outMetrics = new DisplayMetrics();
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
    int sidePadding = (int) (outMetrics.widthPixels / 100. * Math.pow(outMetrics.density, 3) / 2.);
    sidePadding = Math.max(0, Math.min(100, sidePadding));
    mGridView.setPadding(sidePadding, mGridView.getPaddingTop(), sidePadding, mGridView.getPaddingBottom());

    // Select between grid or list
    if (hasSpaceForGrid(getView())) {
        Log.d(TAG, "Switching to grid mode");
        mGridView.setNumColumns(GridView.AUTO_FIT);
        mGridView.setStretchMode(GRID_STRETCH_MODE);
        mGridView.setHorizontalSpacing(Util.convertDpToPx(GRID_HORIZONTAL_SPACING_DP));
        mGridView.setVerticalSpacing(Util.convertDpToPx(GRID_VERTICAL_SPACING_DP));
        mGridView.setColumnWidth(Util.convertDpToPx(GRID_ITEM_WIDTH_DP));
        mVideoAdapter.setListMode(false);
    } else {
        Log.d(TAG, "Switching to list mode");
        mGridView.setNumColumns(1);
        mGridView.setStretchMode(LIST_STRETCH_MODE);
        mGridView.setHorizontalSpacing(LIST_HORIZONTAL_SPACING_DP);
        mGridView.setVerticalSpacing(Util.convertDpToPx(LIST_VERTICAL_SPACING_DP));
        mVideoAdapter.setListMode(true);
    }
}

From source file:io.tehtotalpwnage.musicphp_android.NavigationActivity.java

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    // Handle navigation view item clicks here.

    int id = item.getItemId();

    if (id == R.id.nav_camera) {
        // Everything after this point is actually my code.
        StringRequest req = new StringRequest(Request.Method.GET, UrlGenerator.getServerUrl(this) + "/api/user",
                new Response.Listener<String>() {
                    @Override// w  w w  .  j av  a2  s . com
                    public void onResponse(String response) {
                        TextView view = new TextView(getApplicationContext());
                        view.setText(response);
                        FrameLayout layout = (FrameLayout) findViewById(R.id.navFrame);
                        layout.removeAllViews();
                        layout.addView(view);
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.v(TAG, "Connection error");
                        TextView view = new TextView(getApplicationContext());
                        view.setText(getResources().getString(R.string.error_connection));
                        FrameLayout layout = (FrameLayout) findViewById(R.id.navFrame);
                        layout.removeAllViews();
                        layout.addView(view);
                        NetworkResponse networkResponse = error.networkResponse;
                        if (networkResponse != null
                                && networkResponse.statusCode == HttpURLConnection.HTTP_UNAUTHORIZED) {
                            Log.v(TAG, "Request was unauthorized, meaning that a new token is needed");
                            AccountManager manager = AccountManager.get(getApplicationContext());
                            manager.invalidateAuthToken(MusicPhpAccount.ACCOUNT_TYPE,
                                    getIntent().getStringExtra(AccountManager.KEY_AUTHTOKEN));
                            Intent intent = new Intent(NavigationActivity.this, MainActivity.class);
                            startActivity(intent);
                        }
                    }
                }) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("Accept", "application/json");
                params.put("Authorization",
                        "Bearer " + getIntent().getStringExtra(AccountManager.KEY_AUTHTOKEN));
                return params;
            }
        };
        VolleySingleton.getInstance(this).addToRequestQueue(req);
    } else if (id == R.id.nav_gallery) {
        final Context context = this;
        getListing(Item.albums, 0, new VolleyCallback() {
            @Override
            public void onSuccess(JSONArray result) {
                Log.d(TAG, "Volley callback reached");
                String albums[][] = new String[result.length()][3];
                for (int i = 0; i < result.length(); i++) {
                    try {
                        JSONObject object = result.getJSONObject(i);
                        albums[i][0] = object.getString("name");
                        albums[i][1] = object.getJSONObject("artist").getString("name");
                        albums[i][2] = object.getString("id");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                AlbumListingAdapter adapter = new AlbumListingAdapter(context, albums,
                        getIntent().getStringExtra(AccountManager.KEY_AUTHTOKEN));
                GridView view = new GridView(context);
                view.setLayoutParams(new DrawerLayout.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,
                        ViewGroup.LayoutParams.MATCH_PARENT));
                view.setNumColumns(GridView.AUTO_FIT);
                view.setColumnWidth((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 148,
                        getResources().getDisplayMetrics()));
                view.setStretchMode(GridView.STRETCH_SPACING_UNIFORM);
                view.setAdapter(adapter);
                view.setVerticalSpacing((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8,
                        getResources().getDisplayMetrics()));
                FrameLayout layout = (FrameLayout) findViewById(R.id.navFrame);
                layout.removeAllViews();
                layout.addView(view);
                Log.d(TAG, "Adapter setup complete");
            }
        });
    } else if (id == R.id.nav_slideshow) {
        getListing(Item.artists, 0, new VolleyCallback() {
            @Override
            public void onSuccess(JSONArray result) {

            }
        });
    } else if (id == R.id.nav_manage) {
        getListing(Item.tracks, 0, new VolleyCallback() {
            @Override
            public void onSuccess(JSONArray result) {
            }
        });
    } else if (id == R.id.nav_share) {
        Log.d(TAG, "Queue contains " + queue.size() + " items. Displaying queue...");
        ListView view = new ListView(this);
        view.setLayoutParams(new DrawerLayout.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT));
        String tracks[][] = new String[queue.size()][2];
        for (int i = 0; i < queue.size(); i++) {
            MediaSessionCompat.QueueItem queueItem = queue.get(i);
            tracks[i][0] = queueItem.getDescription().getMediaId();
            tracks[i][1] = (String) queueItem.getDescription().getTitle();
        }
        AlbumAdapter adapter = new AlbumAdapter(this, tracks,
                getIntent().getStringExtra(AccountManager.KEY_AUTHTOKEN), this);
        view.setAdapter(adapter);
        view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //                    String sAddress = getApplicationContext().getSharedPreferences("Prefs", 0).getString("server", null);
                //                    Bundle bundle = new Bundle();
                //                    bundle.putString("Authorization", "Bearer " + token);
                //                    bundle.putString("Title", tracks[position][1]);
                //                    bundle.putString("art", getIntent().getStringExtra("art"));
                //                    bundle.putString("ID", tracks[position][0]);
                //                    MediaControllerCompat.getMediaController(AlbumActivity.this).getTransportControls().playFromUri(Uri.parse(sAddress + "/api/tracks/" + tracks[position][0] + "/audio"), bundle);
            }
        });
        FrameLayout layout = (FrameLayout) findViewById(R.id.navFrame);
        layout.removeAllViews();
        layout.addView(view);
    } else if (id == R.id.nav_send) {
        String sAddress = getSharedPreferences("Prefs", 0).getString("server", null);
        StringRequest request = new StringRequest(Request.Method.POST, sAddress + "/api/logout",
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject object = new JSONObject(response);
                            if (object.getString("status").equals("OK")) {
                                Log.v(TAG, "Logged out successfully. Now redirecting to MainActivity...");
                                AccountManager manager = AccountManager.get(getApplicationContext());
                                Account accounts[] = manager.getAccountsByType(MusicPhpAccount.ACCOUNT_TYPE);
                                int account = 0;
                                for (int i = 0; i < accounts.length; i++) {
                                    if (accounts[i].name.equals(
                                            getIntent().getStringExtra(AccountManager.KEY_ACCOUNT_NAME))) {
                                        account = i;
                                        break;
                                    }
                                }

                                final AccountManagerFuture future;

                                if (Build.VERSION.SDK_INT >= 22) {
                                    future = manager.removeAccount(accounts[account], NavigationActivity.this,
                                            new AccountManagerCallback<Bundle>() {
                                                @Override
                                                public void run(AccountManagerFuture<Bundle> future) {

                                                }
                                            }, null);
                                } else {
                                    future = manager.removeAccount(accounts[account],
                                            new AccountManagerCallback<Boolean>() {
                                                @Override
                                                public void run(AccountManagerFuture<Boolean> future) {

                                                }
                                            }, null);
                                }

                                AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
                                    @Override
                                    protected Void doInBackground(Void... params) {
                                        try {
                                            future.getResult();
                                            Intent intent = new Intent(NavigationActivity.this,
                                                    MainActivity.class);
                                            startActivity(intent);
                                        } catch (Exception e) {
                                            e.printStackTrace();
                                        }
                                        return null;
                                    }
                                };
                                task.execute();
                            } else {
                                Log.v(TAG, "Issue with logging out...");
                            }
                        } catch (JSONException e) {
                            Log.e(TAG, "Issue with parsing JSON...");
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e(TAG, "Error on logging out...");
                    }
                }) {
            @Override
            public Map<String, String> getHeaders() {
                Map<String, String> params = new HashMap<>();
                params.put("Accept", "application/json");
                params.put("Authorization",
                        "Bearer " + getIntent().getStringExtra(AccountManager.KEY_AUTHTOKEN));
                return params;
            }
        };
        VolleySingleton.getInstance(this).addToRequestQueue(request);
    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);

    return true;
}

From source file:dev.dworks.apps.anexplorer.fragment.DirectoryFragment.java

private void updateDisplayState() {
    final State state = getDisplayState(this);

    if (mLastMode == state.derivedMode && mLastShowSize == state.showSize
            && mLastShowFolderSize == state.showFolderSize && mLastShowThumbnail == state.showThumbnail)
        return;//from   w w  w .j a  v a  2 s . co m
    mLastMode = state.derivedMode;
    mLastShowSize = state.showSize;
    mLastShowFolderSize = state.showFolderSize;
    mLastShowThumbnail = state.showThumbnail;

    mListView.setVisibility(state.derivedMode == MODE_LIST ? View.VISIBLE : View.GONE);
    mGridView.setVisibility(state.derivedMode == MODE_GRID ? View.VISIBLE : View.GONE);

    final int choiceMode;
    if (state.allowMultiple) {
        choiceMode = ListView.CHOICE_MODE_MULTIPLE_MODAL;
    } else {
        choiceMode = ListView.CHOICE_MODE_NONE;
    }

    final int thumbSize;
    if (state.derivedMode == MODE_GRID) {
        thumbSize = getResources().getDimensionPixelSize(R.dimen.grid_width);
        mListView.setAdapter(null);
        mListView.setChoiceMode(ListView.CHOICE_MODE_NONE);
        mGridView.setAdapter(mAdapter);
        mGridView.setColumnWidth(getResources().getDimensionPixelSize(R.dimen.grid_width));
        mGridView.setNumColumns(GridView.AUTO_FIT);
        mGridView.setChoiceMode(choiceMode);
        mCurrentView = mGridView;
    } else if (state.derivedMode == MODE_LIST) {
        thumbSize = getResources().getDimensionPixelSize(R.dimen.icon_size);
        mGridView.setAdapter(null);
        mGridView.setChoiceMode(ListView.CHOICE_MODE_NONE);
        mListView.setAdapter(mAdapter);
        mListView.setChoiceMode(choiceMode);
        mCurrentView = mListView;
    } else {
        throw new IllegalStateException("Unknown state " + state.derivedMode);
    }

    mThumbSize = new Point(thumbSize, thumbSize);
}

From source file:de.baumann.thema.RequestActivity.java

@SuppressWarnings("unchecked")
private void populateView(ArrayList arrayListFinal) {
    ArrayList<AppInfo> local_arrayList;
    local_arrayList = arrayListFinal;/*from ww  w .ja  va  2 s  .  c o m*/

    GridView grid = (GridView) findViewById(R.id.appgrid);

    assert grid != null;
    grid.setVerticalSpacing(GridView.AUTO_FIT);
    grid.setHorizontalSpacing(GridView.AUTO_FIT);
    grid.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
    grid.setFastScrollEnabled(true);
    grid.setFastScrollAlwaysVisible(true);

    if (DEBUG)
        Log.v(TAG, "height: " + getDisplaySize("height") + "; width: " + getDisplaySize("width"));

    AppAdapter appInfoAdapter;
    if (isPortrait()) {
        grid.setNumColumns(numCol_Portrait);

        if (isTablet(context)) {
            grid.setNumColumns(numCol_Portrait); //Here you can change the number of columns for Tablets
            if (DEBUG)
                Log.v(TAG, "isTablet");
        }
        if (isXLargeTablet(context)) {
            grid.setNumColumns(numCol_Portrait); //Here you can change the number of columns for Large Tablets
            if (DEBUG)
                Log.v(TAG, "isXLargeTablet");
        }

        appInfoAdapter = new AppAdapter(this, R.layout.request_item_list, local_arrayList);
    }

    else {
        grid.setNumColumns(numCol_Landscape);

        if (isTablet(context)) {
            grid.setNumColumns(numCol_Landscape); //Here you can change the number of columns for Tablets
            if (DEBUG)
                Log.v(TAG, "isTablet");
        }
        if (isXLargeTablet(context)) {
            grid.setNumColumns(numCol_Landscape); //Here you can change the number of columns for Large Tablets
            if (DEBUG)
                Log.v(TAG, "isXLargeTablet");
        }

        appInfoAdapter = new AppAdapter(this, R.layout.request_item_grid, local_arrayList);
    }

    grid.setAdapter(appInfoAdapter);
    grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> AdapterView, View view, int position, long row) {
            AppInfo appInfo = (AppInfo) AdapterView.getItemAtPosition(position);
            CheckBox checker = (CheckBox) view.findViewById(R.id.CBappSelect);
            ViewSwitcher icon = (ViewSwitcher) view.findViewById(R.id.viewSwitcherChecked);
            LinearLayout localBackground = (LinearLayout) view.findViewById(R.id.card_bg);
            Animation aniIn = AnimationUtils.loadAnimation(context, R.anim.request_flip_in_half_1);
            Animation aniOut = AnimationUtils.loadAnimation(context, R.anim.request_flip_in_half_2);

            checker.toggle();
            appInfo.setSelected(checker.isChecked());

            icon.setInAnimation(aniIn);
            icon.setOutAnimation(aniOut);

            if (appInfo.isSelected()) {
                if (DEBUG)
                    Log.v(TAG, "Selected App: " + appInfo.getName());
                localBackground
                        .setBackgroundColor(ContextCompat.getColor(context, R.color.request_card_pressed));
                if (icon.getDisplayedChild() == 0) {
                    icon.showNext();
                }
            } else {
                if (DEBUG)
                    Log.v(TAG, "Deselected App: " + appInfo.getName());
                localBackground
                        .setBackgroundColor(ContextCompat.getColor(context, R.color.request_card_unpressed));
                if (icon.getDisplayedChild() == 1) {
                    icon.showPrevious();
                }
            }
        }
    });
}

From source file:de.mrapp.android.bottomsheet.BottomSheet.java

/**
 * Shows the grid view, which is used to show the bottom sheet's items.
 *///w ww. j  a  v  a 2  s. c  o  m
private void showGridView() {
    gridView = (GridView) contentContainer.findViewById(R.id.bottom_sheet_grid_view);

    if (gridView != null) {
        contentContainer.setVisibility(View.VISIBLE);

        if (getStyle() == Style.GRID) {
            int horizontalPadding = getContext().getResources()
                    .getDimensionPixelSize(R.dimen.bottom_sheet_grid_item_horizontal_padding);
            int paddingBottom = getContext().getResources()
                    .getDimensionPixelSize(R.dimen.bottom_sheet_grid_padding_bottom);
            gridView.setPadding(horizontalPadding, 0, horizontalPadding, paddingBottom);
            gridView.setNumColumns(GridView.AUTO_FIT);
            gridView.setColumnWidth(
                    getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_grid_item_size));
        } else {
            int paddingBottom = getContext().getResources()
                    .getDimensionPixelSize(R.dimen.bottom_sheet_list_padding_bottom);
            gridView.setPadding(0, 0, 0, paddingBottom);
            gridView.setNumColumns(getStyle() == Style.LIST_COLUMNS
                    && (getDeviceType(getContext()) == DisplayUtil.DeviceType.TABLET
                            || getOrientation(getContext()) == DisplayUtil.Orientation.LANDSCAPE) ? 2 : 1);
        }

        gridView.setOnItemClickListener(createItemClickListener());
        gridView.setOnItemLongClickListener(createItemLongClickListener());
        gridView.setAdapter(adapter);
    }
}

From source file:kr.wdream.ui.DialogsActivity.java

public void initView() {

    RelativeLayout relativeLayout = new RelativeLayout(context);
    fragmentView = relativeLayout;//  w ww  . j  av a  2  s  . c  om

    LinearLayout lytTab = new LinearLayout(context);
    lytTab.setId(kr.wdream.storyshop.R.id.lytTab);

    tabParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT, 1);
    tabParams.setMargins(0, 0, 0, 5);

    tab1 = new LinearLayout(context);
    tab1.setGravity(Gravity.CENTER);
    imgTab1 = new ImageView(context);
    imgTab1.setImageResource(R.drawable.m_i_main_flist_n);
    tab1.addView(imgTab1, LayoutHelper.createLinear(21, 20));
    tab1.setOnClickListener(this);

    tab2 = new LinearLayout(context);
    tab2.setGravity(Gravity.CENTER);
    imgTab2 = new ImageView(context);
    imgTab2.setImageResource(R.drawable.m_i_main_clist_n);
    tab2.addView(imgTab2, LayoutHelper.createLinear(21, 20));
    tab2.setOnClickListener(this);

    tab3 = new LinearLayout(context);
    tab3.setGravity(Gravity.CENTER);
    imgTab3 = new ImageView(context);
    imgTab3.setImageResource(R.drawable.m_i_main_content_n);
    tab3.addView(imgTab3, LayoutHelper.createLinear(21, 20));
    tab3.setOnClickListener(this);

    tab4 = new LinearLayout(context);
    tab4.setGravity(Gravity.CENTER);
    imgTab4 = new ImageView(context);
    imgTab4.setImageResource(R.drawable.m_i_main_setting_n);
    tab4.addView(imgTab4, LayoutHelper.createLinear(21, 20));
    tab4.setOnClickListener(this);

    lytDialogs = new RelativeLayout(context);
    RelativeLayout.LayoutParams lytDialogsParams = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    lytDialogsParams.addRule(RelativeLayout.BELOW, lytTab.getId());
    lytDialogs.setLayoutParams(lytDialogsParams);
    lytDialogs.setVisibility(View.GONE);
    listView = new RecyclerListView(context);
    listView.setVerticalScrollBarEnabled(true);
    listView.setItemAnimator(null);
    listView.setInstantClick(true);
    listView.setLayoutAnimation(null);
    listView.setTag(4);
    listView.setVisibility(View.GONE);

    layoutManager = new LinearLayoutManager(context) {
        @Override
        public boolean supportsPredictiveItemAnimations() {
            return false;
        }
    };

    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    listView.setLayoutManager(layoutManager);
    listView.setVerticalScrollbarPosition(
            LocaleController.isRTL ? ListView.SCROLLBAR_POSITION_LEFT : ListView.SCROLLBAR_POSITION_RIGHT);
    listView.setVerticalScrollBarEnabled(false);
    listView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
    listView.setVerticalScrollbarPosition(
            LocaleController.isRTL ? ListView.SCROLLBAR_POSITION_LEFT : ListView.SCROLLBAR_POSITION_RIGHT);
    listView.setOnItemClickListener(new RecyclerListView.OnItemClickListener() {
        @Override
        public void onItemClick(View view, int position) {
            if (listView == null || listView.getAdapter() == null) {
                return;
            }
            long dialog_id = 0;
            int message_id = 0;
            RecyclerView.Adapter adapter = listView.getAdapter();
            if (adapter == dialogsAdapter) {
                TLRPC.TL_dialog dialog = dialogsAdapter.getItem(position);
                if (dialog == null) {
                    return;
                }
                dialog_id = dialog.id;
            } else if (adapter == dialogsSearchAdapter) {
                Object obj = dialogsSearchAdapter.getItem(position);
                if (obj instanceof TLRPC.User) {
                    dialog_id = ((TLRPC.User) obj).id;
                    if (dialogsSearchAdapter.isGlobalSearch(position)) {
                        ArrayList<TLRPC.User> users = new ArrayList<>();
                        users.add((TLRPC.User) obj);
                        MessagesController.getInstance().putUsers(users, false);
                        MessagesStorage.getInstance().putUsersAndChats(users, null, false, true);
                    }
                    if (!onlySelect) {
                        dialogsSearchAdapter.putRecentSearch(dialog_id, (TLRPC.User) obj);
                    }
                } else if (obj instanceof TLRPC.Chat) {
                    if (dialogsSearchAdapter.isGlobalSearch(position)) {
                        ArrayList<TLRPC.Chat> chats = new ArrayList<>();
                        chats.add((TLRPC.Chat) obj);
                        MessagesController.getInstance().putChats(chats, false);
                        MessagesStorage.getInstance().putUsersAndChats(null, chats, false, true);
                    }
                    if (((TLRPC.Chat) obj).id > 0) {
                        dialog_id = -((TLRPC.Chat) obj).id;
                    } else {
                        dialog_id = AndroidUtilities.makeBroadcastId(((TLRPC.Chat) obj).id);
                    }
                    if (!onlySelect) {
                        dialogsSearchAdapter.putRecentSearch(dialog_id, (TLRPC.Chat) obj);
                    }
                } else if (obj instanceof TLRPC.EncryptedChat) {
                    dialog_id = ((long) ((TLRPC.EncryptedChat) obj).id) << 32;
                    if (!onlySelect) {
                        dialogsSearchAdapter.putRecentSearch(dialog_id, (TLRPC.EncryptedChat) obj);
                    }
                } else if (obj instanceof MessageObject) {
                    MessageObject messageObject = (MessageObject) obj;
                    dialog_id = messageObject.getDialogId();
                    message_id = messageObject.getId();
                    dialogsSearchAdapter.addHashtagsFromMessage(dialogsSearchAdapter.getLastSearchString());
                } else if (obj instanceof String) {
                    Log.d(LOG_TAG, "obj String : openSearchField");
                    actionBar.openSearchField((String) obj);
                }
            }

            if (dialog_id == 0) {
                return;
            }

            if (onlySelect) {
                didSelectResult(dialog_id, true, false);
            } else {
                Bundle args = new Bundle();
                int lower_part = (int) dialog_id;
                int high_id = (int) (dialog_id >> 32);
                if (lower_part != 0) {
                    if (high_id == 1) {
                        args.putInt("chat_id", lower_part);
                    } else {
                        if (lower_part > 0) {
                            args.putInt("user_id", lower_part);
                        } else if (lower_part < 0) {
                            if (message_id != 0) {
                                TLRPC.Chat chat = MessagesController.getInstance().getChat(-lower_part);
                                if (chat != null && chat.migrated_to != null) {
                                    args.putInt("migrated_to", lower_part);
                                    lower_part = -chat.migrated_to.channel_id;
                                }
                            }
                            args.putInt("chat_id", -lower_part);
                        }
                    }
                } else {
                    args.putInt("enc_id", high_id);
                }
                if (message_id != 0) {
                    args.putInt("message_id", message_id);
                } else {
                    if (actionBar != null) {
                        actionBar.closeSearchField();
                    }
                }
                if (AndroidUtilities.isTablet()) {
                    if (openedDialogId == dialog_id && adapter != dialogsSearchAdapter) {
                        return;
                    }
                    if (dialogsAdapter != null) {
                        dialogsAdapter.setOpenedDialogId(openedDialogId = dialog_id);
                        updateVisibleRows(MessagesController.UPDATE_MASK_SELECT_DIALOG);
                    }
                }
                if (searchString != null) {
                    if (MessagesController.checkCanOpenChat(args, DialogsActivity.this)) {
                        NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats);
                        presentFragment(new ChatActivity(args));
                    }
                } else {
                    if (MessagesController.checkCanOpenChat(args, DialogsActivity.this)) {
                        presentFragment(new ChatActivity(args));
                    }
                }
            }
        }
    });
    listView.setOnItemLongClickListener(new RecyclerListView.OnItemLongClickListener() {
        @Override
        public boolean onItemClick(View view, int position) {
            if (onlySelect || searching && searchWas || getParentActivity() == null) {
                if (searchWas && searching || dialogsSearchAdapter.isRecentSearchDisplayed()) {
                    RecyclerView.Adapter adapter = listView.getAdapter();
                    if (adapter == dialogsSearchAdapter) {
                        Object item = dialogsSearchAdapter.getItem(position);
                        if (item instanceof String || dialogsSearchAdapter.isRecentSearchDisplayed()) {
                            AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                            builder.setTitle(LocaleController.getString("AppName",
                                    kr.wdream.storyshop.R.string.AppName));
                            builder.setMessage(LocaleController.getString("ClearSearch",
                                    kr.wdream.storyshop.R.string.ClearSearch));
                            builder.setPositiveButton(LocaleController
                                    .getString("ClearButton", kr.wdream.storyshop.R.string.ClearButton)
                                    .toUpperCase(), new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialogInterface, int i) {
                                            if (dialogsSearchAdapter.isRecentSearchDisplayed()) {
                                                dialogsSearchAdapter.clearRecentSearch();
                                            } else {
                                                dialogsSearchAdapter.clearRecentHashtags();
                                            }
                                        }
                                    });
                            builder.setNegativeButton(
                                    LocaleController.getString("Cancel", kr.wdream.storyshop.R.string.Cancel),
                                    null);
                            showDialog(builder.create());
                            return true;
                        }
                    }
                }
                return false;
            }
            TLRPC.TL_dialog dialog;
            ArrayList<TLRPC.TL_dialog> dialogs = getDialogsArray();
            if (position < 0 || position >= dialogs.size()) {
                return false;
            }
            dialog = dialogs.get(position);
            selectedDialog = dialog.id;

            BottomSheet.Builder builder = new BottomSheet.Builder(getParentActivity());
            int lower_id = (int) selectedDialog;
            int high_id = (int) (selectedDialog >> 32);

            if (DialogObject.isChannel(dialog)) {
                final TLRPC.Chat chat = MessagesController.getInstance().getChat(-lower_id);
                CharSequence items[];
                if (chat != null && chat.megagroup) {
                    items = new CharSequence[] {
                            LocaleController.getString("ClearHistoryCache",
                                    kr.wdream.storyshop.R.string.ClearHistoryCache),
                            chat == null || !chat.creator
                                    ? LocaleController.getString("LeaveMegaMenu",
                                            kr.wdream.storyshop.R.string.LeaveMegaMenu)
                                    : LocaleController.getString("DeleteMegaMenu",
                                            kr.wdream.storyshop.R.string.DeleteMegaMenu) };
                } else {
                    items = new CharSequence[] {
                            LocaleController.getString("ClearHistoryCache",
                                    kr.wdream.storyshop.R.string.ClearHistoryCache),
                            chat == null || !chat.creator
                                    ? LocaleController.getString("LeaveChannelMenu",
                                            kr.wdream.storyshop.R.string.LeaveChannelMenu)
                                    : LocaleController.getString("ChannelDeleteMenu",
                                            kr.wdream.storyshop.R.string.ChannelDeleteMenu) };
                }
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, final int which) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                        builder.setTitle(
                                LocaleController.getString("AppName", kr.wdream.storyshop.R.string.AppName));
                        if (which == 0) {
                            if (chat != null && chat.megagroup) {
                                builder.setMessage(LocaleController.getString("AreYouSureClearHistorySuper",
                                        kr.wdream.storyshop.R.string.AreYouSureClearHistorySuper));
                            } else {
                                builder.setMessage(LocaleController.getString("AreYouSureClearHistoryChannel",
                                        kr.wdream.storyshop.R.string.AreYouSureClearHistoryChannel));
                            }
                            builder.setPositiveButton(
                                    LocaleController.getString("OK", kr.wdream.storyshop.R.string.OK),
                                    new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialogInterface, int i) {
                                            MessagesController.getInstance().deleteDialog(selectedDialog, 2);
                                        }
                                    });
                        } else {
                            if (chat != null && chat.megagroup) {
                                if (!chat.creator) {
                                    builder.setMessage(LocaleController.getString("MegaLeaveAlert",
                                            kr.wdream.storyshop.R.string.MegaLeaveAlert));
                                } else {
                                    builder.setMessage(LocaleController.getString("MegaDeleteAlert",
                                            kr.wdream.storyshop.R.string.MegaDeleteAlert));
                                }
                            } else {
                                if (chat == null || !chat.creator) {
                                    builder.setMessage(LocaleController.getString("ChannelLeaveAlert",
                                            kr.wdream.storyshop.R.string.ChannelLeaveAlert));
                                } else {
                                    builder.setMessage(LocaleController.getString("ChannelDeleteAlert",
                                            kr.wdream.storyshop.R.string.ChannelDeleteAlert));
                                }
                            }
                            builder.setPositiveButton(
                                    LocaleController.getString("OK", kr.wdream.storyshop.R.string.OK),
                                    new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialogInterface, int i) {
                                            MessagesController.getInstance().deleteUserFromChat(
                                                    (int) -selectedDialog, UserConfig.getCurrentUser(), null);
                                            if (AndroidUtilities.isTablet()) {
                                                NotificationCenter.getInstance().postNotificationName(
                                                        NotificationCenter.closeChats, selectedDialog);
                                            }
                                        }
                                    });
                        }
                        builder.setNegativeButton(
                                LocaleController.getString("Cancel", kr.wdream.storyshop.R.string.Cancel),
                                null);
                        showDialog(builder.create());
                    }
                });
                showDialog(builder.create());
            } else {
                final boolean isChat = lower_id < 0 && high_id != 1;
                TLRPC.User user = null;
                if (!isChat && lower_id > 0 && high_id != 1) {
                    user = MessagesController.getInstance().getUser(lower_id);
                }
                final boolean isBot = user != null && user.bot;
                builder.setItems(
                        new CharSequence[] {
                                LocaleController.getString("ClearHistory",
                                        kr.wdream.storyshop.R.string.ClearHistory),
                                isChat ? LocaleController.getString("DeleteChat",
                                        kr.wdream.storyshop.R.string.DeleteChat)
                                        : isBot ? LocaleController.getString("DeleteAndStop",
                                                kr.wdream.storyshop.R.string.DeleteAndStop)
                                                : LocaleController.getString("Delete",
                                                        kr.wdream.storyshop.R.string.Delete) },
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, final int which) {
                                AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                                builder.setTitle(LocaleController.getString("AppName",
                                        kr.wdream.storyshop.R.string.AppName));
                                if (which == 0) {
                                    builder.setMessage(LocaleController.getString("AreYouSureClearHistory",
                                            kr.wdream.storyshop.R.string.AreYouSureClearHistory));
                                } else {
                                    if (isChat) {
                                        builder.setMessage(LocaleController.getString("AreYouSureDeleteAndExit",
                                                kr.wdream.storyshop.R.string.AreYouSureDeleteAndExit));
                                    } else {
                                        builder.setMessage(
                                                LocaleController.getString("AreYouSureDeleteThisChat",
                                                        kr.wdream.storyshop.R.string.AreYouSureDeleteThisChat));
                                    }
                                }
                                builder.setPositiveButton(
                                        LocaleController.getString("OK", kr.wdream.storyshop.R.string.OK),
                                        new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialogInterface, int i) {
                                                if (which != 0) {
                                                    if (isChat) {
                                                        TLRPC.Chat currentChat = MessagesController
                                                                .getInstance().getChat((int) -selectedDialog);
                                                        if (currentChat != null
                                                                && ChatObject.isNotInChat(currentChat)) {
                                                            MessagesController.getInstance()
                                                                    .deleteDialog(selectedDialog, 0);
                                                        } else {
                                                            MessagesController.getInstance().deleteUserFromChat(
                                                                    (int) -selectedDialog,
                                                                    MessagesController.getInstance().getUser(
                                                                            UserConfig.getClientUserId()),
                                                                    null);
                                                        }
                                                    } else {
                                                        MessagesController.getInstance()
                                                                .deleteDialog(selectedDialog, 0);
                                                    }
                                                    if (isBot) {
                                                        MessagesController.getInstance()
                                                                .blockUser((int) selectedDialog);
                                                    }
                                                    if (AndroidUtilities.isTablet()) {
                                                        NotificationCenter.getInstance().postNotificationName(
                                                                NotificationCenter.closeChats, selectedDialog);
                                                    }
                                                } else {
                                                    MessagesController.getInstance()
                                                            .deleteDialog(selectedDialog, 1);
                                                }
                                            }
                                        });
                                builder.setNegativeButton(LocaleController.getString("Cancel",
                                        kr.wdream.storyshop.R.string.Cancel), null);
                                showDialog(builder.create());
                            }
                        });
                showDialog(builder.create());
            }
            return true;
        }
    });

    listContacts = new LetterSectionsListView(context);
    RelativeLayout.LayoutParams contactParams = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

    contactParams.addRule(RelativeLayout.BELOW, lytTab.getId());
    listContacts.setLayoutParams(contactParams);

    Log.d(LOG_TAG, "contactsAdapter : " + LaunchActivity.contactsAdapter.getItem(0));

    listContacts.setAdapter(LaunchActivity.contactsAdapter);

    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Log.d(LOG_TAG, "postDelayed Start");
            handler.sendEmptyMessage(0);
        }
    }, 1500);

    listContacts.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            int section = LaunchActivity.contactsAdapter.getSectionForPosition(position);
            int row = LaunchActivity.contactsAdapter.getPositionInSectionForPosition(position);

            Object item = LaunchActivity.contactsAdapter.getItem(section, row);

            if (0 == position) {
                Intent intent = new Intent(Intent.ACTION_SEND);
                intent.setType("text/plain");
                intent.putExtra(Intent.EXTRA_TEXT, ContactsController.getInstance().getInviteText());
                getParentActivity().startActivityForResult(Intent.createChooser(intent, LocaleController
                        .getString("InviteFriends", kr.wdream.storyshop.R.string.InviteFriends)), 500);
            } else if (item instanceof ContactsController.Contact) {
                ContactsController.Contact contact = (ContactsController.Contact) item;
                String usePhone = null;
                if (!contact.phones.isEmpty()) {
                    usePhone = contact.phones.get(0);
                }
                if (usePhone == null || getParentActivity() == null) {
                    return;
                }
                AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
                builder.setMessage(
                        LocaleController.getString("InviteUser", kr.wdream.storyshop.R.string.InviteUser));
                builder.setTitle(LocaleController.getString("AppName", kr.wdream.storyshop.R.string.AppName));
                final String arg1 = usePhone;
                builder.setPositiveButton(LocaleController.getString("OK", kr.wdream.storyshop.R.string.OK),
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                try {
                                    Intent intent = new Intent(Intent.ACTION_VIEW,
                                            Uri.fromParts("sms", arg1, null));
                                    intent.putExtra("sms_body", LocaleController.getString("InviteText",
                                            kr.wdream.storyshop.R.string.InviteText));
                                    getParentActivity().startActivityForResult(intent, 500);
                                } catch (Exception e) {
                                    FileLog.e("tmessages", e);
                                }
                            }
                        });
                builder.setNegativeButton(
                        LocaleController.getString("Cancel", kr.wdream.storyshop.R.string.Cancel), null);
                showDialog(builder.create());
            } else {
                TLRPC.User user = (TLRPC.User) LaunchActivity.contactsAdapter.getItem(position);

                if (user == null)
                    return;
                Bundle args = new Bundle();
                args.putInt("user_id", user.id);

                if (MessagesController.checkCanOpenChat(args, DialogsActivity.this)) {
                    presentFragment(new ChatActivity(args), false);
                }

            }
        }
    });

    contentLayout = new LinearLayout(context);
    contentLayout.setOrientation(LinearLayout.VERTICAL);
    contentLayout.setVisibility(View.GONE);

    RelativeLayout.LayoutParams contentParams = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
    contentParams.addRule(RelativeLayout.BELOW, lytTab.getId());

    // Contents Layout ?
    GridView gridContents = new GridView(context);
    gridContents.setNumColumns(GridView.AUTO_FIT);
    gridContents.setGravity(Gravity.CENTER);

    ContentsAdapter contentsAdapter = new ContentsAdapter(context);
    gridContents.setAdapter(contentsAdapter);

    contentLayout.addView(gridContents,
            LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));

    gridContents.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
            case 0:

                Log.d("??", "grid0");
                Intent intent = new Intent(context, ShoppingMainActivity.class);
                context.startActivity(intent);
                break;

            case 1:
                Log.d("??", "grid1");
                break;

            case 2:
                Log.d("??", "grid2");
                break;

            case 3:
                Log.d("??", "grid3");
                break;
            }
        }
    });

    // Setting Layout ?
    settingLayout = new LinearLayout(context);
    settingLayout.setOrientation(LinearLayout.VERTICAL);
    settingLayout.setVisibility(View.GONE);

    settingLayout.setBackgroundColor(Color.parseColor("#EEEEEE"));

    createSettingLayout();

    // TabBar 
    lytTab.addView(tab1, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 1));
    lytTab.addView(tab2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 1));
    lytTab.addView(tab3, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 1));
    lytTab.addView(tab4, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 1));

    relativeLayout.addView(lytTab, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 50));

    RelativeLayout.LayoutParams listParams = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

    lytDialogs.addView(listView, listParams);
    relativeLayout.addView(lytDialogs, lytDialogsParams);
    relativeLayout.addView(listContacts, contactParams);
    relativeLayout.addView(contentLayout, contentParams);
    relativeLayout.addView(settingLayout, contentParams);

    searchEmptyView = new EmptyTextProgressView(context);
    searchEmptyView.setVisibility(View.GONE);
    searchEmptyView.setShowAtCenter(true);
    searchEmptyView.setText(LocaleController.getString("NoResult", kr.wdream.storyshop.R.string.NoResult));
    relativeLayout.addView(searchEmptyView,
            LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));

    emptyView = new LinearLayout(context);
    emptyView.setOrientation(LinearLayout.VERTICAL);
    emptyView.setVisibility(View.GONE);
    emptyView.setGravity(Gravity.CENTER);
    //        relativeLayout.addView(emptyView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
    emptyView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });

    TextView textView = new TextView(context);
    textView.setText(LocaleController.getString("NoChats", kr.wdream.storyshop.R.string.NoChats));
    textView.setTextColor(0xff959595);
    textView.setGravity(Gravity.CENTER);
    textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
    emptyView.addView(textView,
            LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT));

    textView = new TextView(context);
    String help = LocaleController.getString("NoChatsHelp", kr.wdream.storyshop.R.string.NoChatsHelp);
    if (AndroidUtilities.isTablet() && !AndroidUtilities.isSmallTablet()) {
        help = help.replace('\n', ' ');
    }
    textView.setText(help);
    textView.setTextColor(0xff959595);
    textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
    textView.setGravity(Gravity.CENTER);
    textView.setPadding(AndroidUtilities.dp(8), AndroidUtilities.dp(6), AndroidUtilities.dp(8), 0);
    textView.setLineSpacing(AndroidUtilities.dp(2), 1);
    emptyView.addView(textView,
            LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT));

    progressView = new ProgressBar(context);
    progressView.setVisibility(View.GONE);

    RelativeLayout.LayoutParams progParams = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    progParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
    progressView.setLayoutParams(progParams);
    //        relativeLayout.addView(progressView);
    //        relativeLayout.addView(progressView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER));

    floatingButton = new ImageView(context);
    floatingButton.setVisibility(onlySelect ? View.GONE : View.VISIBLE);
    floatingButton.setScaleType(ImageView.ScaleType.CENTER);
    floatingButton.setBackgroundResource(kr.wdream.storyshop.R.drawable.floating_states);
    floatingButton.setImageResource(kr.wdream.storyshop.R.drawable.floating_pencil);
    Log.d(LOG_TAG, "setVisibility.VISIBLE_floating : " + floatingButton.getVisibility());
    floatingButton.setVisibility(View.GONE);
    Log.d(LOG_TAG, "setVisibility.GONE_floating : " + floatingButton.getVisibility());

    if (Build.VERSION.SDK_INT >= 21) {
        StateListAnimator animator = new StateListAnimator();
        animator.addState(new int[] { android.R.attr.state_pressed },
                ObjectAnimator
                        .ofFloat(floatingButton, "translationZ", AndroidUtilities.dp(2), AndroidUtilities.dp(4))
                        .setDuration(200));
        animator.addState(new int[] {},
                ObjectAnimator
                        .ofFloat(floatingButton, "translationZ", AndroidUtilities.dp(4), AndroidUtilities.dp(2))
                        .setDuration(200));
        floatingButton.setStateListAnimator(animator);
        floatingButton.setOutlineProvider(new ViewOutlineProvider() {
            @SuppressLint("NewApi")
            @Override
            public void getOutline(View view, Outline outline) {
                outline.setOval(0, 0, AndroidUtilities.dp(56), AndroidUtilities.dp(56));
            }
        });
    }
    RelativeLayout.LayoutParams floatingParams = new RelativeLayout.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    floatingParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    floatingParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    //        relativeLayout.addView(floatingButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.BOTTOM, LocaleController.isRTL ? 14 : 0, 0, LocaleController.isRTL ? 0 : 14, 14));
    relativeLayout.addView(floatingButton, floatingParams);
    floatingButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Bundle args = new Bundle();
            args.putBoolean("destroyAfterSelect", true);
            presentFragment(new ContactsActivity(args));
        }
    });

    listView.setOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            if (newState == RecyclerView.SCROLL_STATE_DRAGGING && searching && searchWas) {
                AndroidUtilities.hideKeyboard(getParentActivity().getCurrentFocus());
            }
        }

        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            int firstVisibleItem = layoutManager.findFirstVisibleItemPosition();
            int visibleItemCount = Math.abs(layoutManager.findLastVisibleItemPosition() - firstVisibleItem) + 1;
            int totalItemCount = recyclerView.getAdapter().getItemCount();

            if (searching && searchWas) {
                if (visibleItemCount > 0 && layoutManager.findLastVisibleItemPosition() == totalItemCount - 1
                        && !dialogsSearchAdapter.isMessagesSearchEndReached()) {
                    dialogsSearchAdapter.loadMoreSearchMessages();
                }
                return;
            }
            if (visibleItemCount > 0) {
                if (layoutManager.findLastVisibleItemPosition() >= getDialogsArray().size() - 10) {
                    MessagesController.getInstance().loadDialogs(-1, 100,
                            !MessagesController.getInstance().dialogsEndReached);
                }
            }

            if (floatingButton.getVisibility() != View.GONE) {
                final View topChild = recyclerView.getChildAt(0);
                int firstViewTop = 0;
                if (topChild != null) {
                    firstViewTop = topChild.getTop();
                }
                boolean goingDown;
                boolean changed = true;
                if (prevPosition == firstVisibleItem) {
                    final int topDelta = prevTop - firstViewTop;
                    goingDown = firstViewTop < prevTop;
                    changed = Math.abs(topDelta) > 1;
                } else {
                    goingDown = firstVisibleItem > prevPosition;
                }
                if (changed && scrollUpdated) {
                    hideFloatingButton(goingDown);
                }
                prevPosition = firstVisibleItem;
                prevTop = firstViewTop;
                scrollUpdated = true;
            }
        }
    });

    if (searchString == null) {
        dialogsAdapter = new DialogsAdapter(context, dialogsType);
        Log.d("Dialog", "dialogsSize : " + dialogsAdapter.getItemCount());

        if (AndroidUtilities.isTablet() && openedDialogId != 0) {
            dialogsAdapter.setOpenedDialogId(openedDialogId);
        }
        listView.setAdapter(dialogsAdapter);
    }
    int type = 0;
    if (searchString != null) {
        type = 2;
    } else if (!onlySelect) {
        type = 1;
    }
    dialogsSearchAdapter = new DialogsSearchAdapter(context, type, dialogsType);
    dialogsSearchAdapter.setDelegate(new DialogsSearchAdapter.DialogsSearchAdapterDelegate() {
        @Override
        public void searchStateChanged(boolean search) {
            if (searching && searchWas && searchEmptyView != null) {
                if (search) {
                    searchEmptyView.showProgress();
                } else {
                    searchEmptyView.showTextView();
                }
            }
        }

        @Override
        public void didPressedOnSubDialog(int did) {
            if (onlySelect) {
                didSelectResult(did, true, false);
            } else {
                Bundle args = new Bundle();
                if (did > 0) {
                    args.putInt("user_id", did);
                } else {
                    args.putInt("chat_id", -did);
                }
                if (actionBar != null) {
                    actionBar.closeSearchField();
                }
                if (AndroidUtilities.isTablet()) {
                    if (dialogsAdapter != null) {
                        dialogsAdapter.setOpenedDialogId(openedDialogId = did);
                        updateVisibleRows(MessagesController.UPDATE_MASK_SELECT_DIALOG);
                    }
                }
                if (searchString != null) {
                    if (MessagesController.checkCanOpenChat(args, DialogsActivity.this)) {
                        NotificationCenter.getInstance().postNotificationName(NotificationCenter.closeChats);
                        presentFragment(new ChatActivity(args));
                    }
                } else {
                    if (MessagesController.checkCanOpenChat(args, DialogsActivity.this)) {
                        presentFragment(new ChatActivity(args));
                    }
                }
            }
        }

        @Override
        public void needRemoveHint(final int did) {
            if (getParentActivity() == null) {
                return;
            }
            TLRPC.User user = MessagesController.getInstance().getUser(did);
            if (user == null) {
                return;
            }
            AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
            builder.setTitle(LocaleController.getString("AppName", kr.wdream.storyshop.R.string.AppName));
            builder.setMessage(LocaleController.formatString("ChatHintsDelete",
                    kr.wdream.storyshop.R.string.ChatHintsDelete,
                    ContactsController.formatName(user.first_name, user.last_name)));
            builder.setPositiveButton(LocaleController.getString("OK", kr.wdream.storyshop.R.string.OK),
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            SearchQuery.removePeer(did);
                        }
                    });
            builder.setNegativeButton(LocaleController.getString("Cancel", kr.wdream.storyshop.R.string.Cancel),
                    null);
            showDialog(builder.create());
        }
    });

    if (MessagesController.getInstance().loadingDialogs && MessagesController.getInstance().dialogs.isEmpty()) {
        searchEmptyView.setVisibility(View.GONE);
        emptyView.setVisibility(View.GONE);
        listView.setEmptyView(progressView);
    } else {
        searchEmptyView.setVisibility(View.GONE);
        progressView.setVisibility(View.GONE);
        listView.setEmptyView(emptyView);
    }
    if (searchString != null) {
        actionBar.openSearchField(searchString);
    }

    if (!onlySelect && dialogsType == 0) {
        relativeLayout.addView(new PlayerView(context, this), LayoutHelper
                .createFrame(LayoutHelper.MATCH_PARENT, 39, Gravity.TOP | Gravity.LEFT, 0, -36, 0, 0));
    }

    tab1.performClick();
}

From source file:com.nttec.everychan.ui.presentation.BoardFragment.java

@SuppressLint("InlinedApi")
private void openGridGallery() {
    final int tnSize = resources.getDimensionPixelSize(R.dimen.post_thumbnail_size);

    class GridGalleryAdapter extends ArrayAdapter<Triple<AttachmentModel, String, String>>
            implements View.OnClickListener, AbsListView.OnScrollListener {
        private final GridView view;
        private boolean selectingMode = false;
        private boolean[] isSelected = null;
        private volatile boolean isBusy = false;

        public GridGalleryAdapter(GridView view, List<Triple<AttachmentModel, String, String>> list) {
            super(activity, 0, list);
            this.view = view;
            this.isSelected = new boolean[list.size()];
        }/*from w  ww  .  ja  v a 2 s .  com*/

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        }

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
                if (isBusy)
                    setNonBusy();
                isBusy = false;
            } else
                isBusy = true;
        }

        private void setNonBusy() {
            if (!downloadThumbnails())
                return;
            for (int i = 0; i < view.getChildCount(); ++i) {
                View v = view.getChildAt(i);
                Object tnTag = v.findViewById(R.id.post_thumbnail_image).getTag();
                if (tnTag == null || tnTag == Boolean.FALSE)
                    fill(view.getPositionForView(v), v, false);
            }
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = new FrameLayout(activity);
                convertView.setLayoutParams(new AbsListView.LayoutParams(tnSize, tnSize));
                ImageView tnImage = new ImageView(activity);
                tnImage.setLayoutParams(new FrameLayout.LayoutParams(tnSize, tnSize, Gravity.CENTER));
                tnImage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
                tnImage.setId(R.id.post_thumbnail_image);
                ((FrameLayout) convertView).addView(tnImage);
            }
            convertView.setTag(getItem(position).getLeft());
            safeRegisterForContextMenu(convertView);
            convertView.setOnClickListener(this);
            fill(position, convertView, isBusy);
            if (isSelected[position]) {
                /*ImageView overlay = new ImageView(activity);
                overlay.setImageResource(android.R.drawable.checkbox_on_background);*/
                FrameLayout overlay = new FrameLayout(activity);
                overlay.setBackgroundColor(Color.argb(128, 0, 255, 0));
                if (((FrameLayout) convertView).getChildCount() < 2)
                    ((FrameLayout) convertView).addView(overlay);

            } else {
                if (((FrameLayout) convertView).getChildCount() > 1)
                    ((FrameLayout) convertView).removeViewAt(1);
            }
            return convertView;
        }

        private void safeRegisterForContextMenu(View view) {
            try {
                view.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
                    @Override
                    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
                        if (presentationModel == null) {
                            Fragment currentFragment = MainApplication
                                    .getInstance().tabsSwitcher.currentFragment;
                            if (currentFragment instanceof BoardFragment) {
                                currentFragment.onCreateContextMenu(menu, v, menuInfo);
                            }
                        } else {
                            BoardFragment.this.onCreateContextMenu(menu, v, menuInfo);
                        }
                    }
                });
            } catch (Exception e) {
                Logger.e(TAG, e);
            }
        }

        @Override
        public void onClick(View v) {
            if (selectingMode) {
                int position = view.getPositionForView(v);
                isSelected[position] = !isSelected[position];
                notifyDataSetChanged();
            } else {
                BoardFragment fragment = BoardFragment.this;
                if (presentationModel == null) {
                    Fragment currentFragment = MainApplication.getInstance().tabsSwitcher.currentFragment;
                    if (currentFragment instanceof BoardFragment)
                        fragment = (BoardFragment) currentFragment;
                }
                fragment.openAttachment((AttachmentModel) v.getTag());
            }
        }

        private void fill(int position, View view, boolean isBusy) {
            AttachmentModel attachment = getItem(position).getLeft();
            String attachmentHash = getItem(position).getMiddle();
            ImageView tnImage = (ImageView) view.findViewById(R.id.post_thumbnail_image);
            if (attachment.thumbnail == null || attachment.thumbnail.length() == 0) {
                tnImage.setTag(Boolean.TRUE);
                tnImage.setImageResource(Attachments.getDefaultThumbnailResId(attachment.type));
                return;
            }
            tnImage.setTag(Boolean.FALSE);
            CancellableTask imagesDownloadTask = BoardFragment.this.imagesDownloadTask;
            ExecutorService imagesDownloadExecutor = BoardFragment.this.imagesDownloadExecutor;
            if (presentationModel == null) {
                Fragment currentFragment = MainApplication.getInstance().tabsSwitcher.currentFragment;
                if (currentFragment instanceof BoardFragment) {
                    imagesDownloadTask = ((BoardFragment) currentFragment).imagesDownloadTask;
                    imagesDownloadExecutor = ((BoardFragment) currentFragment).imagesDownloadExecutor;
                }
            }
            bitmapCache.asyncGet(attachmentHash, attachment.thumbnail, tnSize, chan, localFile,
                    imagesDownloadTask, tnImage, imagesDownloadExecutor, Async.UI_HANDLER,
                    downloadThumbnails() && !isBusy,
                    downloadThumbnails() ? (isBusy ? 0 : R.drawable.thumbnail_error)
                            : Attachments.getDefaultThumbnailResId(attachment.type));
        }

        public void setSelectingMode(boolean selectingMode) {
            this.selectingMode = selectingMode;
            if (!selectingMode) {
                Arrays.fill(isSelected, false);
                notifyDataSetChanged();
            }
        }

        public void selectAll() {
            if (selectingMode) {
                Arrays.fill(isSelected, true);
                notifyDataSetChanged();
            }
        }

        public void downloadSelected(final Runnable onFinish) {
            final Dialog progressDialog = ProgressDialog.show(activity,
                    resources.getString(R.string.grid_gallery_dlg_title),
                    resources.getString(R.string.grid_gallery_dlg_message), true, false);
            Async.runAsync(new Runnable() {
                @Override
                public void run() {
                    BoardFragment fragment = BoardFragment.this;
                    if (fragment.presentationModel == null) {
                        Fragment currentFragment = MainApplication.getInstance().tabsSwitcher.currentFragment;
                        if (currentFragment instanceof BoardFragment)
                            fragment = (BoardFragment) currentFragment;
                    }
                    boolean flag = false;
                    for (int i = 0; i < isSelected.length; ++i)
                        if (isSelected[i])
                            if (!fragment.downloadFile(getItem(i).getLeft(), true))
                                flag = true;
                    final boolean toast = flag;
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if (toast)
                                Toast.makeText(activity, R.string.notification_download_exists_or_in_queue,
                                        Toast.LENGTH_LONG).show();
                            progressDialog.dismiss();
                            onFinish.run();
                        }
                    });
                }
            });
        }
    }

    try {
        List<Triple<AttachmentModel, String, String>> list = presentationModel.getAttachments();
        if (list == null) {
            Toast.makeText(activity, R.string.notifacation_updating_now, Toast.LENGTH_LONG).show();
            return;
        }

        GridView grid = new GridView(activity);
        final GridGalleryAdapter gridAdapter = new GridGalleryAdapter(grid, list);
        grid.setNumColumns(GridView.AUTO_FIT);
        grid.setColumnWidth(tnSize);
        int spacing = (int) (resources.getDisplayMetrics().density * 5 + 0.5f);
        grid.setVerticalSpacing(spacing);
        grid.setHorizontalSpacing(spacing);
        grid.setPadding(spacing, spacing, spacing, spacing);
        grid.setAdapter(gridAdapter);
        grid.setOnScrollListener(gridAdapter);
        grid.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1f));

        final Button btnToSelecting = new Button(activity);
        btnToSelecting.setText(R.string.grid_gallery_select);
        CompatibilityUtils.setTextAppearance(btnToSelecting, android.R.style.TextAppearance_Small);
        btnToSelecting.setSingleLine();
        btnToSelecting.setVisibility(View.VISIBLE);
        btnToSelecting.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT));

        final LinearLayout layoutSelectingButtons = new LinearLayout(activity);
        layoutSelectingButtons.setOrientation(LinearLayout.HORIZONTAL);
        layoutSelectingButtons.setWeightSum(10f);
        Button btnDownload = new Button(activity);
        btnDownload.setLayoutParams(
                new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 3.25f));
        btnDownload.setText(R.string.grid_gallery_download);
        CompatibilityUtils.setTextAppearance(btnDownload, android.R.style.TextAppearance_Small);
        btnDownload.setSingleLine();
        Button btnSelectAll = new Button(activity);
        btnSelectAll.setLayoutParams(
                new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 3.75f));
        btnSelectAll.setText(android.R.string.selectAll);
        CompatibilityUtils.setTextAppearance(btnSelectAll, android.R.style.TextAppearance_Small);
        btnSelectAll.setSingleLine();
        Button btnCancel = new Button(activity);
        btnCancel.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 3f));
        btnCancel.setText(android.R.string.cancel);
        CompatibilityUtils.setTextAppearance(btnCancel, android.R.style.TextAppearance_Small);
        btnCancel.setSingleLine();
        layoutSelectingButtons.addView(btnDownload);
        layoutSelectingButtons.addView(btnSelectAll);
        layoutSelectingButtons.addView(btnCancel);
        layoutSelectingButtons.setVisibility(View.GONE);
        layoutSelectingButtons.setLayoutParams(new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

        btnToSelecting.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btnToSelecting.setVisibility(View.GONE);
                layoutSelectingButtons.setVisibility(View.VISIBLE);
                gridAdapter.setSelectingMode(true);
            }
        });

        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btnToSelecting.setVisibility(View.VISIBLE);
                layoutSelectingButtons.setVisibility(View.GONE);
                gridAdapter.setSelectingMode(false);
            }
        });

        btnSelectAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                gridAdapter.selectAll();
            }
        });

        btnDownload.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                gridAdapter.downloadSelected(new Runnable() {
                    @Override
                    public void run() {
                        btnToSelecting.setVisibility(View.VISIBLE);
                        layoutSelectingButtons.setVisibility(View.GONE);
                        gridAdapter.setSelectingMode(false);
                    }
                });
            }
        });

        LinearLayout dlgLayout = new LinearLayout(activity);
        dlgLayout.setOrientation(LinearLayout.VERTICAL);
        dlgLayout.addView(btnToSelecting);
        dlgLayout.addView(layoutSelectingButtons);
        dlgLayout.addView(grid);

        Dialog gridDialog = new Dialog(activity);
        gridDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        gridDialog.setContentView(dlgLayout);
        gridDialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        gridDialog.show();
    } catch (OutOfMemoryError oom) {
        MainApplication.freeMemory();
        Logger.e(TAG, oom);
        Toast.makeText(activity, R.string.error_out_of_memory, Toast.LENGTH_LONG).show();
    }
}