Search in sources :

Example 1 with ClickItemTouchListener

use of com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener in project MusicDNA by harjot-oberai.

the class AllPlaylistsFragment method onViewCreated.

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    backBtn = (ImageView) view.findViewById(R.id.all_playlist_back_btn);
    backBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            getActivity().onBackPressed();
        }
    });
    allPlaylistFragmentTitle = (TextView) view.findViewById(R.id.all_playlist_fragment_title);
    if (SplashActivity.tf4 != null)
        allPlaylistFragmentTitle.setTypeface(SplashActivity.tf4);
    playlistFragIcon = (ImageView) view.findViewById(R.id.all_playlist_frag_icon);
    playlistFragIcon.setImageTintList(ColorStateList.valueOf(HomeActivity.themeColor));
    initializeHeaderImages(view);
    bottomMarginLayout = view.findViewById(R.id.bottom_margin_layout);
    if (HomeActivity.isReloaded)
        bottomMarginLayout.getLayoutParams().height = 0;
    else
        bottomMarginLayout.getLayoutParams().height = CommonUtils.dpTopx(65, getContext());
    noPlaylistContent = (LinearLayout) view.findViewById(R.id.noPlaylistContent);
    allPlaylistRecycler = (RecyclerView) view.findViewById(R.id.all_playlists_recycler);
    addPlaylistFAB = (FloatingActionButton) view.findViewById(R.id.new_playlist_fab);
    addPlaylistFAB.setBackgroundTintList(ColorStateList.valueOf(HomeActivity.themeColor));
    addPlaylistFAB.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mCallback.newPlaylistListener();
        }
    });
    if (SplashActivity.tf4 != null)
        ((TextView) view.findViewById(R.id.noPlaylistContentText)).setTypeface(SplashActivity.tf4);
    if (HomeActivity.allPlaylists.getPlaylists().size() == 0) {
        allPlaylistRecycler.setVisibility(View.INVISIBLE);
        noPlaylistContent.setVisibility(View.VISIBLE);
    } else {
        allPlaylistRecycler.setVisibility(View.VISIBLE);
        noPlaylistContent.setVisibility(View.INVISIBLE);
    }
    vpAdapter = new ViewAllPlaylistsRecyclerAdapter(HomeActivity.allPlaylists.getPlaylists(), getContext());
    mLayoutManager2 = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
    allPlaylistRecycler.setLayoutManager(mLayoutManager2);
    allPlaylistRecycler.setItemAnimator(new DefaultItemAnimator());
    allPlaylistRecycler.setAdapter(vpAdapter);
    allPlaylistRecycler.addOnItemTouchListener(new ClickItemTouchListener(allPlaylistRecycler) {

        @Override
        public boolean onClick(RecyclerView parent, View view, int position, long id) {
            mCallback.onPlaylistSelected(position);
            return true;
        }

        @Override
        public boolean onLongClick(RecyclerView parent, View view, final int position, long id) {
            PopupMenu popup = new PopupMenu(getContext(), view);
            popup.getMenuInflater().inflate(R.menu.playlist_popup, popup.getMenu());
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    if (item.getTitle().equals("Play")) {
                        HomeActivity.tempPlaylist = HomeActivity.allPlaylists.getPlaylists().get(position);
                        int size = HomeActivity.tempPlaylist.getSongList().size();
                        HomeActivity.queue.getQueue().clear();
                        for (int i = 0; i < size; i++) {
                            HomeActivity.queue.addToQueue(HomeActivity.tempPlaylist.getSongList().get(i));
                        }
                        HomeActivity.queueCurrentIndex = 0;
                        mCallback.onPlaylistMenuPLayAll();
                    } else if (item.getTitle().equals("Add to Queue")) {
                        Playlist pl = HomeActivity.allPlaylists.getPlaylists().get(position);
                        for (UnifiedTrack ut : pl.getSongList()) {
                            HomeActivity.queue.addToQueue(ut);
                        }
                    } else if (item.getTitle().equals("Delete")) {
                        HomeActivity.allPlaylists.getPlaylists().remove(position);
                        if (vpAdapter != null) {
                            vpAdapter.notifyItemRemoved(position);
                        }
                        if (HomeActivity.allPlaylists.getPlaylists().size() == 0) {
                            noPlaylistContent.setVisibility(View.VISIBLE);
                        }
                        new HomeActivity.SavePlaylists().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
                        homeActivity.pAdapter.notifyItemRemoved(position);
                    } else if (item.getTitle().equals("Rename")) {
                        HomeActivity.renamePlaylistNumber = position;
                        mCallback.onPlaylistRename();
                    }
                    return true;
                }
            });
            popup.show();
            return true;
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
        }
    });
}
Also used : HomeActivity(com.sdsmdg.harjot.MusicDNA.activities.HomeActivity) MenuItem(android.view.MenuItem) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) DefaultItemAnimator(android.support.v7.widget.DefaultItemAnimator) Playlist(com.sdsmdg.harjot.MusicDNA.models.Playlist) UnifiedTrack(com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack) RecyclerView(android.support.v7.widget.RecyclerView) ClickItemTouchListener(com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener) PopupMenu(android.support.v7.widget.PopupMenu)

Example 2 with ClickItemTouchListener

use of com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener in project MusicDNA by harjot-oberai.

the class FavouritesFragment method onViewCreated.

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    backBtn = (ImageView) view.findViewById(R.id.fav_back_btn);
    backBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            getActivity().onBackPressed();
        }
    });
    fragIcon = (ImageView) view.findViewById(R.id.fav_frag_icon);
    fragIcon.setImageTintList(ColorStateList.valueOf(HomeActivity.themeColor));
    fragTitle = (TextView) view.findViewById(R.id.fav_fragment_title);
    if (SplashActivity.tf4 != null)
        fragTitle.setTypeface(SplashActivity.tf4);
    addToQueueIcon = (ImageView) view.findViewById(R.id.add_fav_to_queue_icon);
    addToQueueIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mCallback.addFavToQueue();
        }
    });
    backdrop = (ImageView) view.findViewById(R.id.fav_backdrop);
    if (HomeActivity.favouriteTracks.getFavourite().size() > 0) {
        UnifiedTrack ut = HomeActivity.favouriteTracks.getFavourite().get(0);
        if (ut.getType()) {
            LocalTrack lt = ut.getLocalTrack();
            imgLoader.DisplayImage(lt.getPath(), backdrop);
        } else {
            Track t = ut.getStreamTrack();
            Picasso.with(getContext()).load(t.getArtworkURL()).resize(100, 100).error(R.drawable.ic_default).placeholder(R.drawable.ic_default).into(backdrop);
        }
    }
    bottomMarginLayout = view.findViewById(R.id.bottom_margin_layout);
    if (HomeActivity.isReloaded)
        bottomMarginLayout.getLayoutParams().height = 0;
    else
        bottomMarginLayout.getLayoutParams().height = CommonUtils.dpTopx(65, getContext());
    favouriteRecycler = (RecyclerView) view.findViewById(R.id.favouriteRecycler);
    noFavouriteContent = (LinearLayout) view.findViewById(R.id.noFavouriteContent);
    playAll = (FloatingActionButton) view.findViewById(R.id.fav_play_all_fab);
    if (SplashActivity.tf4 != null)
        ((TextView) view.findViewById(R.id.favNoContentText)).setTypeface(SplashActivity.tf4);
    if (HomeActivity.favouriteTracks.getFavourite().size() == 0) {
        favouriteRecycler.setVisibility(View.INVISIBLE);
        playAll.setVisibility(View.INVISIBLE);
        noFavouriteContent.setVisibility(View.VISIBLE);
    } else {
        favouriteRecycler.setVisibility(View.VISIBLE);
        playAll.setVisibility(View.VISIBLE);
        noFavouriteContent.setVisibility(View.INVISIBLE);
    }
    fAdapter = new FavouriteTrackAdapter(HomeActivity.favouriteTracks.getFavourite(), this, getContext());
    mLayoutManager2 = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
    favouriteRecycler.setLayoutManager(mLayoutManager2);
    favouriteRecycler.setItemAnimator(new DefaultItemAnimator());
    favouriteRecycler.setAdapter(fAdapter);
    favouriteRecycler.addOnItemTouchListener(new ClickItemTouchListener(favouriteRecycler) {

        @Override
        public boolean onClick(RecyclerView parent, View view, int position, long id) {
            mCallback.onFavouriteItemClicked(position);
            return true;
        }

        @Override
        public boolean onLongClick(RecyclerView parent, View view, int position, long id) {
            return true;
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
        }
    });
    if (HomeActivity.favouriteTracks.getFavourite().size() == 0) {
        playAll.setVisibility(View.INVISIBLE);
    } else {
        playAll.setVisibility(View.VISIBLE);
    }
    playAll.setBackgroundTintList(ColorStateList.valueOf(HomeActivity.themeColor));
    playAll.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (HomeActivity.favouriteTracks.getFavourite().size() > 0) {
                HomeActivity.queue.getQueue().clear();
                for (int i = 0; i < HomeActivity.favouriteTracks.getFavourite().size(); i++) {
                    HomeActivity.queue.getQueue().add(HomeActivity.favouriteTracks.getFavourite().get(i));
                }
                HomeActivity.queueCurrentIndex = 0;
                mCallback.onFavouritePlayAll();
            }
        }
    });
    ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(fAdapter);
    mItemTouchHelper = new ItemTouchHelper(callback);
    mItemTouchHelper.attachToRecyclerView(favouriteRecycler);
}
Also used : SimpleItemTouchHelperCallback(com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.SimpleItemTouchHelperCallback) LocalTrack(com.sdsmdg.harjot.MusicDNA.models.LocalTrack) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) DefaultItemAnimator(android.support.v7.widget.DefaultItemAnimator) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) UnifiedTrack(com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack) RecyclerView(android.support.v7.widget.RecyclerView) ClickItemTouchListener(com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener) UnifiedTrack(com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack) LocalTrack(com.sdsmdg.harjot.MusicDNA.models.LocalTrack) Track(com.sdsmdg.harjot.MusicDNA.models.Track)

Example 3 with ClickItemTouchListener

use of com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener in project MusicDNA by harjot-oberai.

the class PlayerFragment method onViewCreated.

@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    imgLoader = new ImageLoader(getContext());
    smallPlayer = (RelativeLayout) view.findViewById(R.id.smallPlayer);
    snappyRecyclerView = (SnappyRecyclerView) view.findViewById(R.id.visualizer_recycler);
    bufferingIndicator = (AVLoadingIndicatorView) view.findViewById(R.id.bufferingIndicator);
    currTime = (TextView) view.findViewById(R.id.currTime);
    totalTime = (TextView) view.findViewById(R.id.totalTime);
    repeatController = (ImageView) view.findViewById(R.id.repeat_controller);
    shuffleController = (ImageView) view.findViewById(R.id.shuffle_controller);
    spToolbar = (RelativeLayout) view.findViewById(R.id.smallPlayer_AB);
    overflowMenuAB = (ImageView) view.findViewById(R.id.menuIcon);
    lyricsContainer = (RelativeLayout) view.findViewById(R.id.lyrics_container);
    lyricsIcon = (ImageView) view.findViewById(R.id.lyrics_icon);
    lyricsContent = (TextView) view.findViewById(R.id.lyrics_content);
    lyricsLoadingIndicator = (AVLoadingIndicatorView) view.findViewById(R.id.lyrics_loading_indicator);
    lyricsStatus = (TextView) view.findViewById(R.id.lyrics_status_text);
    lyricsIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (!isLyricsVisisble) {
                lyricsIcon.setAlpha(1.0f);
                mVisualizerView.setVisibility(View.GONE);
                lyricsContainer.setVisibility(View.VISIBLE);
                lyricsLoadingIndicator.setVisibility(View.VISIBLE);
                lyricsStatus.setText("Searching Lyrics");
                lyricsStatus.setVisibility(View.VISIBLE);
                if (currentLyrics == null) {
                    downloadThread = new DownloadThread(PlayerFragment.this, false, selected_track_artist.getText().toString(), selected_track_title.getText().toString());
                    downloadThread.start();
                } else {
                    onLyricsDownloaded(currentLyrics);
                }
            } else {
                lyricsIcon.setAlpha(0.5f);
                lyricsContent.setText("");
                lyricsContainer.setVisibility(View.GONE);
                mVisualizerView.setVisibility(View.VISIBLE);
            }
            isLyricsVisisble = !isLyricsVisisble;
        }
    });
    spImgAB = (ImageView) view.findViewById(R.id.selected_track_image_sp_AB);
    spImgAB.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (!homeActivity.isPlayerTransitioning && smallPlayer != null) {
                homeActivity.hidePlayer();
                homeActivity.isPlayerVisible = false;
            }
        }
    });
    spTitleAB = (TextView) view.findViewById(R.id.selected_track_title_sp_AB);
    spTitleAB.setSelected(true);
    spArtistAB = (TextView) view.findViewById(R.id.selected_track_artist_sp_AB);
    if (homeActivity.shuffleEnabled) {
        shuffleController.setImageResource(R.drawable.ic_shuffle_filled);
    } else {
        shuffleController.setImageResource(R.drawable.ic_shuffle_alpha);
    }
    if (homeActivity.repeatEnabled) {
        repeatController.setImageResource(R.drawable.ic_repeat_filled);
    } else if (homeActivity.repeatOnceEnabled) {
        repeatController.setImageResource(R.drawable.ic_repeat_once);
    } else {
        repeatController.setImageResource(R.drawable.ic_repeat_alpha);
    }
    repeatController.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (homeActivity.repeatOnceEnabled) {
                homeActivity.repeatOnceEnabled = false;
                repeatController.setImageResource(R.drawable.ic_repeat_alpha);
            } else if (homeActivity.repeatEnabled) {
                homeActivity.repeatEnabled = false;
                homeActivity.repeatOnceEnabled = true;
                repeatController.setImageResource(R.drawable.ic_repeat_once);
            } else {
                homeActivity.repeatEnabled = true;
                repeatController.setImageResource(R.drawable.ic_repeat_filled);
            }
        }
    });
    shuffleController.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (homeActivity.shuffleEnabled) {
                homeActivity.shuffleEnabled = false;
                shuffleController.setImageResource(R.drawable.ic_shuffle_alpha);
                mCallback.onShuffleDisabled();
            } else {
                homeActivity.shuffleEnabled = true;
                shuffleController.setImageResource(R.drawable.ic_shuffle_filled);
                mCallback.onShuffleEnabled();
            }
            snappyRecyclerView.scrollToPosition(HomeActivity.queueCurrentIndex);
            snappyRecyclerView.setCurrentPosition(HomeActivity.queueCurrentIndex);
            customAdapter.notifyDataSetChanged();
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                    snappyRecyclerView.setTransparency();
                }
            }, 400);
        }
    });
    equalizerIcon = (ImageView) view.findViewById(R.id.equalizer_icon);
    equalizerIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mCallback.onEqualizerClicked();
        }
    });
    equalizerIcon.setVisibility(View.INVISIBLE);
    saveDNAToggle = (ImageView) view.findViewById(R.id.toggleSaveDNA);
    if (homeActivity.isSaveDNAEnabled) {
        saveDNAToggle.setImageResource(R.drawable.ic_save_filled);
    } else {
        saveDNAToggle.setImageResource(R.drawable.ic_save_alpha);
    }
    saveDNAToggle.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (homeActivity.isSaveDNAEnabled) {
                homeActivity.isSaveDNAEnabled = false;
                saveDNAToggle.setImageResource(R.drawable.ic_save_alpha);
            } else {
                homeActivity.isSaveDNAEnabled = true;
                saveDNAToggle.setImageResource(R.drawable.ic_save_filled);
            }
        }
    });
    mainTrackController = (ImageView) view.findViewById(R.id.controller);
    nextTrackController = (ImageView) view.findViewById(R.id.next);
    previousTrackController = (ImageView) view.findViewById(R.id.previous);
    isFav = false;
    favouriteIcon = (ImageView) view.findViewById(R.id.fav_icon);
    favControllerSp = (ImageView) view.findViewById(R.id.fav_controller_sp);
    if (homeActivity.isFavourite) {
        favouriteIcon.setImageResource(R.drawable.ic_heart_filled_1);
        favControllerSp.setImageResource(R.drawable.ic_heart_filled_1);
        isFav = true;
    } else {
        favouriteIcon.setImageResource(R.drawable.ic_heart_alpha);
        favControllerSp.setImageResource(R.drawable.ic_heart_alpha);
        isFav = false;
    }
    favouriteIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isFav) {
                favouriteIcon.setImageResource(R.drawable.ic_heart_alpha);
                favControllerSp.setImageResource(R.drawable.ic_heart_alpha);
                isFav = false;
                removeFromFavourite();
            } else {
                favouriteIcon.setImageResource(R.drawable.ic_heart_filled_1);
                favControllerSp.setImageResource(R.drawable.ic_heart_filled_1);
                isFav = true;
                addToFavourite();
            }
            new HomeActivity.SaveFavourites().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        }
    });
    favControllerSp.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isFav) {
                favouriteIcon.setImageResource(R.drawable.ic_heart_alpha);
                favControllerSp.setImageResource(R.drawable.ic_heart_alpha);
                isFav = false;
                removeFromFavourite();
            } else {
                favouriteIcon.setImageResource(R.drawable.ic_heart_filled_1);
                favControllerSp.setImageResource(R.drawable.ic_heart_filled_1);
                isFav = true;
                addToFavourite();
            }
            new HomeActivity.SaveFavourites().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
        }
    });
    queueIcon = (ImageView) view.findViewById(R.id.queue_icon);
    queueIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mCallback.onQueueClicked();
        }
    });
    selected_track_image = (ImageView) view.findViewById(R.id.selected_track_image_sp);
    selected_track_title = (TextView) view.findViewById(R.id.selected_track_title_sp);
    selected_track_artist = (TextView) view.findViewById(R.id.selected_track_artist_sp);
    player_controller = (ImageView) view.findViewById(R.id.player_control_sp);
    nextControllerSp = (ImageView) view.findViewById(R.id.next_controller_sp);
    nextControllerSp.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mMediaPlayer.pause();
            homeActivity.nextControllerClicked = true;
            mCallback.onComplete();
        }
    });
    bottomContainer = (RelativeLayout) view.findViewById(R.id.mainControllerContainer);
    seekBarContainer = (RelativeLayout) view.findViewById(R.id.seekBarContainer);
    toggleContainer = (RelativeLayout) view.findViewById(R.id.toggleContainer);
    mVisualizerView = (VisualizerView) view.findViewById(R.id.myvisualizerview);
    VisualizerView.w = HomeActivity.screen_width;
    VisualizerView.h = HomeActivity.screen_height;
    VisualizerView.conf = Bitmap.Config.ARGB_8888;
    VisualizerView.bmp = Bitmap.createBitmap(VisualizerView.w, VisualizerView.h, VisualizerView.conf);
    HomeActivity.cacheCanvas = new Canvas(VisualizerView.bmp);
    if (HomeActivity.queue != null) {
        customAdapter = new CustomAdapter(getContext(), snappyRecyclerView, HomeActivity.queue.getQueue());
    } else {
        customAdapter = new CustomAdapter(getContext(), snappyRecyclerView, new ArrayList<UnifiedTrack>());
    }
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
    snappyRecyclerView.setLayoutManager(linearLayoutManager);
    snappyRecyclerView.setItemAnimator(new DefaultItemAnimator());
    snappyRecyclerView.setAdapter(customAdapter);
    snappyRecyclerView.setActivity(homeActivity);
    snappyRecyclerView.addOnItemTouchListener(new ClickItemTouchListener(snappyRecyclerView) {

        @Override
        public boolean onClick(RecyclerView parent, View view, int position, long id) {
            return false;
        }

        @Override
        public boolean onLongClick(RecyclerView parent, View view, int position, long id) {
            if (homeActivity.isFullScreenEnabled) {
                homeActivity.isFullScreenEnabled = false;
                bottomContainer.setVisibility(View.VISIBLE);
                seekBarContainer.setVisibility(View.VISIBLE);
                toggleContainer.setVisibility(View.VISIBLE);
                spToolbar.setVisibility(View.VISIBLE);
                mCallback.onFullScreen();
            } else {
                homeActivity.isFullScreenEnabled = true;
                bottomContainer.setVisibility(View.GONE);
                seekBarContainer.setVisibility(View.GONE);
                toggleContainer.setVisibility(View.GONE);
                spToolbar.setVisibility(View.INVISIBLE);
                mCallback.onFullScreen();
            }
            return true;
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
        }
    });
    cpb = (CustomProgressBar) view.findViewById(R.id.customProgress);
    smallPlayer.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mCallback.onSmallPlayerTouched();
        }
    });
    track = homeActivity.selectedTrack;
    localTrack = homeActivity.localSelectedTrack;
    if (homeActivity.streamSelected) {
        try {
            durationInMilliSec = track.getDuration();
        } catch (Exception e) {
        }
        if (track.getArtworkURL() != null) {
            Picasso.with(getActivity()).load(track.getArtworkURL()).resize(100, 100).into(selected_track_image);
        } else {
            selected_track_image.setImageResource(R.drawable.ic_default);
        }
        try {
            spTitleAB.setText(track.getTitle());
            selected_track_title.setText(track.getTitle());
            selected_track_artist.setText("");
            spArtistAB.setText("");
        } catch (Exception e) {
        }
    } else {
        try {
            durationInMilliSec = (int) localTrack.getDuration();
        } catch (Exception e) {
        }
        try {
            imgLoader.DisplayImage(localTrack.getPath(), selected_track_image);
        } catch (Exception e) {
        }
        try {
            spTitleAB.setText(localTrack.getTitle());
            selected_track_title.setText(localTrack.getTitle());
            selected_track_artist.setText(localTrack.getArtist());
            spArtistAB.setText(localTrack.getArtist());
        } catch (Exception e) {
        }
    }
    temp = getTime(durationInMilliSec);
    totalTime.setText(temp.first + ":" + temp.second);
    homeActivity.mWifi = homeActivity.connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    try {
        if (homeActivity.streamSelected) {
            if ((homeActivity.settings.isStreamOnlyOnWifiEnabled() && homeActivity.mWifi.isConnected()) || !homeActivity.settings.isStreamOnlyOnWifiEnabled()) {
                isPrepared = false;
                mMediaPlayer.reset();
                mMediaPlayer.setDataSource(track.getStreamURL() + "?client_id=" + Config.CLIENT_ID);
                mMediaPlayer.prepareAsync();
            } else {
                mMediaPlayer.pause();
                homeActivity.nextControllerClicked = true;
                mCallback.onComplete();
            }
        } else {
            isPrepared = false;
            mMediaPlayer.reset();
            File f = new File(localTrack.getPath());
            if (f.exists()) {
                mMediaPlayer.setDataSource(localTrack.getPath());
                mMediaPlayer.prepareAsync();
            } else {
                Toast.makeText(getContext(), "Error playing " + localTrack.getTitle() + ". Skipping to next track", Toast.LENGTH_SHORT).show();
                mMediaPlayer.pause();
                homeActivity.nextControllerClicked = true;
                mCallback.onComplete();
            }
        }
        bufferingIndicator.setVisibility(View.VISIBLE);
        mainTrackController.setVisibility(View.GONE);
    } catch (Exception e) {
        e.printStackTrace();
    }
    overflowMenuAB.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            PopupMenu popMenu = new PopupMenu(getContext(), overflowMenuAB);
            popMenu.getMenuInflater().inflate(R.menu.player_overflow_menu, popMenu.getMenu());
            popMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    if (item.getTitle().equals("Full Screen")) {
                        if (homeActivity.isFullScreenEnabled) {
                            homeActivity.isFullScreenEnabled = false;
                            bottomContainer.setVisibility(View.VISIBLE);
                            seekBarContainer.setVisibility(View.VISIBLE);
                            toggleContainer.setVisibility(View.VISIBLE);
                            spToolbar.setVisibility(View.VISIBLE);
                            mCallback.onFullScreen();
                        } else {
                            homeActivity.isFullScreenEnabled = true;
                            bottomContainer.setVisibility(View.GONE);
                            seekBarContainer.setVisibility(View.GONE);
                            toggleContainer.setVisibility(View.GONE);
                            spToolbar.setVisibility(View.INVISIBLE);
                            mCallback.onFullScreen();
                        }
                    } else if (item.getTitle().equals("Settings")) {
                        mCallback.onSettingsClicked();
                    } else if (item.getTitle().equals("Add to playlist")) {
                        UnifiedTrack ut = HomeActivity.queue.getQueue().get(HomeActivity.queueCurrentIndex);
                        mCallback.addCurrentSongtoPlaylist(ut);
                    }
                    return true;
                }
            });
            popMenu.show();
        }
    });
    player_controller.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isReplayIconVisible) {
                homeActivity.hasQueueEnded = true;
                mCallback.onComplete();
            } else {
                if (!pauseClicked) {
                    pauseClicked = true;
                }
                togglePlayPause();
            }
        }
    });
    mainTrackController.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isReplayIconVisible) {
                homeActivity.hasQueueEnded = true;
                mCallback.onComplete();
            } else {
                if (!pauseClicked) {
                    pauseClicked = true;
                }
                togglePlayPause();
            }
        }
    });
    nextTrackController.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mMediaPlayer.pause();
            homeActivity.nextControllerClicked = true;
            mCallback.onComplete();
        }
    });
    previousTrackController.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (homeActivity.queueCurrentIndex != 0) {
                mMediaPlayer.pause();
                mCallback.onPreviousTrack();
            }
        }
    });
    progressBar = (SeekBar) view.findViewById(R.id.progressBar);
    progressBar.setMax(durationInMilliSec);
    timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {

        public void run() {
            if (isPrepared && !isTracking && getActivity() != null) {
                getActivity().runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        float[] hsv = new float[3];
                        hsv[0] = homeActivity.seekBarColor;
                        hsv[1] = (float) 0.8;
                        hsv[2] = (float) 0.5;
                        progressBar.getProgressDrawable().setColorFilter(new PorterDuffColorFilter(Color.HSVToColor(hsv), PorterDuff.Mode.SRC_IN));
                        cpb.update();
                    }
                });
                try {
                    temp = getTime(mMediaPlayer.getCurrentPosition());
                    getActivity().runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            currTime.setText(temp.first + ":" + temp.second);
                        }
                    });
                    progressBar.setProgress(mMediaPlayer.getCurrentPosition());
                } catch (Exception e) {
                    Log.e("MEDIA", e.getMessage() + ":");
                }
            }
        }
    }, 0, 50);
    progressBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            temp = getTime(progress);
            getActivity().runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    currTime.setText(temp.first + ":" + temp.second);
                }
            });
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            isTracking = true;
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            mMediaPlayer.seekTo(seekBar.getProgress());
            if (mMediaPlayer.isPlaying())
                mMediaPlayer.start();
            isTracking = false;
        }
    });
    final Button mEndButton = new Button(getContext());
    mEndButton.setBackgroundColor(homeActivity.themeColor);
    mEndButton.setTextColor(Color.WHITE);
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

        @Override
        public void run() {
            showCase = new ShowcaseView.Builder(getActivity()).blockAllTouches().singleShot(2).setStyle(R.style.CustomShowcaseTheme).useDecorViewAsParent().replaceEndButton(mEndButton).setContentTitlePaint(homeActivity.tp).setTarget(new ViewTarget(mVisualizerView.getId(), getActivity())).setContentTitle("The DNA").setContentText("The DNA of the currently playing song.").build();
            showCase.setButtonText("Next");
            showCase.setButtonPosition(homeActivity.lps);
            showCase.overrideButtonClick(new View.OnClickListener() {

                int count1 = -1;

                @Override
                public void onClick(View v) {
                    count1++;
                    switch(count1) {
                        case 0:
                            showCase.setTarget(new ViewTarget(mVisualizerView.getId(), getActivity()));
                            showCase.setContentTitle("The DNA");
                            showCase.setContentText("Swipe Left or Right to change Song." + "Long Press for fullscreen");
                            showCase.setButtonPosition(homeActivity.lps);
                            showCase.setButtonText("Next");
                            break;
                        case 1:
                            showCase.setTarget(new ViewTarget(R.id.toggleContainer, getActivity()));
                            showCase.setContentTitle("The Controls");
                            showCase.setContentText("Equalizer \n" + "Save DNA toggle\n" + "Add to Favourites \n" + "Queue");
                            showCase.setButtonPosition(homeActivity.lps);
                            showCase.setButtonText("Done");
                            break;
                        case 2:
                            showCase.setTarget(new ViewTarget(R.id.lyrics_icon, getActivity()));
                            showCase.setContentTitle("Lyrics");
                            showCase.setContentText("Get lyrics by tapping this icon");
                            showCase.setButtonPosition(homeActivity.lps);
                            showCase.setButtonText("Done");
                            break;
                        case 3:
                            showCase.hide();
                            break;
                    }
                }
            });
        }
    }, 500);
}
Also used : ArrayList(java.util.ArrayList) PorterDuffColorFilter(android.graphics.PorterDuffColorFilter) ViewTarget(com.github.amlcurran.showcaseview.targets.ViewTarget) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) CustomAdapter(com.sdsmdg.harjot.MusicDNA.snappyrecyclerview.CustomAdapter) DefaultItemAnimator(android.support.v7.widget.DefaultItemAnimator) DownloadThread(com.sdsmdg.harjot.MusicDNA.utilities.DownloadThread) TimerTask(java.util.TimerTask) Button(android.widget.Button) ClickItemTouchListener(com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener) SeekBar(android.widget.SeekBar) Canvas(android.graphics.Canvas) Handler(android.os.Handler) MenuItem(android.view.MenuItem) ImageView(android.widget.ImageView) ShowcaseView(com.github.amlcurran.showcaseview.ShowcaseView) View(android.view.View) TextView(android.widget.TextView) AVLoadingIndicatorView(com.wang.avi.AVLoadingIndicatorView) VisualizerView(com.sdsmdg.harjot.MusicDNA.visualizers.VisualizerView) RecyclerView(android.support.v7.widget.RecyclerView) SnappyRecyclerView(com.sdsmdg.harjot.MusicDNA.snappyrecyclerview.SnappyRecyclerView) Timer(java.util.Timer) UnifiedTrack(com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack) RecyclerView(android.support.v7.widget.RecyclerView) SnappyRecyclerView(com.sdsmdg.harjot.MusicDNA.snappyrecyclerview.SnappyRecyclerView) ImageLoader(com.sdsmdg.harjot.MusicDNA.imageloader.ImageLoader) File(java.io.File) PopupMenu(android.widget.PopupMenu)

Example 4 with ClickItemTouchListener

use of com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener in project MusicDNA by harjot-oberai.

the class QueueFragment method onViewCreated.

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    backBtn = (ImageView) view.findViewById(R.id.queue_back_btn);
    backBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            getActivity().onBackPressed();
        }
    });
    fragTitle = (TextView) view.findViewById(R.id.queue_fragment_title);
    if (SplashActivity.tf4 != null)
        fragTitle.setTypeface(SplashActivity.tf4);
    clearText = (TextView) view.findViewById(R.id.queue_clear_text);
    clearText.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mCallback.onQueueClear();
        }
    });
    queueRecycler = (RecyclerView) view.findViewById(R.id.queueRecycler);
    qAdapter = new QueueRecyclerAdapter(HomeActivity.queue.getQueue(), getContext(), this);
    mLayoutManager2 = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
    queueRecycler.setLayoutManager(mLayoutManager2);
    queueRecycler.setItemAnimator(new DefaultItemAnimator());
    queueRecycler.setAdapter(qAdapter);
    queueRecycler.addOnItemTouchListener(new ClickItemTouchListener(queueRecycler) {

        @Override
        public boolean onClick(RecyclerView parent, View view, int position, long id) {
            mCallback.onQueueItemClicked(position);
            return true;
        }

        @Override
        public boolean onLongClick(RecyclerView parent, View view, int position, long id) {
            return true;
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
        }
    });
    saveQueue = (FloatingActionButton) view.findViewById(R.id.save_queue);
    saveQueue.setBackgroundTintList(ColorStateList.valueOf(HomeActivity.themeColor));
    saveQueue.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mCallback.onQueueSave();
        }
    });
    ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(qAdapter);
    mItemTouchHelper = new ItemTouchHelper(callback);
    mItemTouchHelper.attachToRecyclerView(queueRecycler);
    Button mEndButton = new Button(getContext());
    mEndButton.setBackgroundColor(HomeActivity.themeColor);
    mEndButton.setTextColor(Color.WHITE);
    showCase = new ShowcaseView.Builder(getActivity()).blockAllTouches().singleShot(3).setStyle(R.style.CustomShowcaseTheme).useDecorViewAsParent().replaceEndButton(mEndButton).setContentTitlePaint(HomeActivity.tp).setTarget(new ViewTarget(R.id.queue_alt_showcase, getActivity())).setContentTitle("Queue").setContentText("Here all songs that are currently in queue are listed." + " Use handle to reorder the Queue and swipe the song to remove from queue").build();
    showCase.setButtonText("Next");
    showCase.setButtonPosition(HomeActivity.lps);
    showCase.overrideButtonClick(new View.OnClickListener() {

        int count1 = 0;

        @Override
        public void onClick(View v) {
            count1++;
            switch(count1) {
                case 1:
                    RelativeLayout.LayoutParams lps = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                    lps.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                    lps.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
                    int margin = ((Number) (getResources().getDisplayMetrics().density * 12)).intValue();
                    lps.setMargins(margin, margin, margin, 5 + HomeActivity.navBarHeightSizeinDp);
                    showCase.setButtonPosition(lps);
                    showCase.setTarget(new ViewTarget(saveQueue.getId(), getActivity()));
                    showCase.setContentTitle("Save Queue");
                    showCase.setContentText("Save the queue as a playlist");
                    showCase.setButtonText("Done");
                    break;
                case 2:
                    showCase.hide();
                    break;
            }
        }
    });
}
Also used : SimpleItemTouchHelperCallback(com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.SimpleItemTouchHelperCallback) ViewTarget(com.github.amlcurran.showcaseview.targets.ViewTarget) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) ImageView(android.widget.ImageView) ShowcaseView(com.github.amlcurran.showcaseview.ShowcaseView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) DefaultItemAnimator(android.support.v7.widget.DefaultItemAnimator) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) Button(android.widget.Button) FloatingActionButton(android.support.design.widget.FloatingActionButton) RelativeLayout(android.widget.RelativeLayout) RecyclerView(android.support.v7.widget.RecyclerView) ClickItemTouchListener(com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener) ShowcaseView(com.github.amlcurran.showcaseview.ShowcaseView)

Example 5 with ClickItemTouchListener

use of com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener in project MusicDNA by harjot-oberai.

the class ViewAlbumFragment method onViewCreated.

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    backBtn = (ImageView) view.findViewById(R.id.view_album_back_btn);
    backBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            getActivity().onBackPressed();
        }
    });
    backDrop = (ImageView) view.findViewById(R.id.album_backdrop);
    imgLoader.DisplayImage(HomeActivity.tempAlbum.getAlbumSongs().get(0).getPath(), backDrop);
    fragTitle = (TextView) view.findViewById(R.id.album_fragment_title);
    if (SplashActivity.tf4 != null)
        fragTitle.setTypeface(SplashActivity.tf4);
    albumTitle = (TextView) view.findViewById(R.id.album_title);
    albumTitle.setText(HomeActivity.tempAlbum.getName());
    albumTracksText = (TextView) view.findViewById(R.id.album_tracks_text);
    addToQueueIcon = (ImageView) view.findViewById(R.id.add_album_to_queue_icon);
    addToQueueIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            mCallback.addAlbumToQueue();
        }
    });
    bottomMarginLayout = view.findViewById(R.id.bottom_margin_layout);
    if (HomeActivity.isReloaded)
        bottomMarginLayout.getLayoutParams().height = 0;
    else
        bottomMarginLayout.getLayoutParams().height = CommonUtils.dpTopx(65, getContext());
    int tmp = HomeActivity.tempAlbum.getAlbumSongs().size();
    String details1;
    if (tmp == 1) {
        details1 = "1 Song ";
    } else {
        details1 = tmp + " Songs ";
    }
    albumTracksText.setText(details1);
    fab = (FloatingActionButton) view.findViewById(R.id.play_all_from_album);
    fab.setBackgroundTintList(ColorStateList.valueOf(HomeActivity.themeColor));
    rv = (RecyclerView) view.findViewById(R.id.album_songs_recycler);
    aslAdapter = new LocalTrackRecyclerAdapter(HomeActivity.tempAlbum.getAlbumSongs(), getContext());
    LinearLayoutManager mLayoutManager2 = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
    rv.setLayoutManager(mLayoutManager2);
    rv.setItemAnimator(new DefaultItemAnimator());
    rv.setAdapter(aslAdapter);
    fab.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            HomeActivity.queue.getQueue().clear();
            for (int i = 0; i < HomeActivity.tempAlbum.getAlbumSongs().size(); i++) {
                UnifiedTrack ut = new UnifiedTrack(true, HomeActivity.tempAlbum.getAlbumSongs().get(i), null);
                HomeActivity.queue.getQueue().add(ut);
            }
            mCallback.onAlbumPlayAll();
        }
    });
    rv.addOnItemTouchListener(new ClickItemTouchListener(rv) {

        @Override
        public boolean onClick(RecyclerView parent, View view, int position, long id) {
            LocalTrack track = HomeActivity.tempAlbum.getAlbumSongs().get(position);
            if (HomeActivity.queue.getQueue().size() == 0) {
                HomeActivity.queueCurrentIndex = 0;
                HomeActivity.queue.getQueue().add(new UnifiedTrack(true, track, null));
            } else if (HomeActivity.queueCurrentIndex == HomeActivity.queue.getQueue().size() - 1) {
                HomeActivity.queueCurrentIndex++;
                HomeActivity.queue.getQueue().add(new UnifiedTrack(true, track, null));
            } else if (HomeActivity.isReloaded) {
                HomeActivity.isReloaded = false;
                HomeActivity.queueCurrentIndex = HomeActivity.queue.getQueue().size();
                HomeActivity.queue.getQueue().add(new UnifiedTrack(true, track, null));
            } else {
                HomeActivity.queue.getQueue().add(++HomeActivity.queueCurrentIndex, new UnifiedTrack(true, track, null));
            }
            HomeActivity.localSelectedTrack = track;
            HomeActivity.streamSelected = false;
            HomeActivity.localSelected = true;
            HomeActivity.queueCall = false;
            HomeActivity.isReloaded = false;
            mCallback.onAlbumSongClick();
            return true;
        }

        @Override
        public boolean onLongClick(RecyclerView parent, View view, final int position, long id) {
            CustomLocalBottomSheetDialog localBottomSheetDialog = new CustomLocalBottomSheetDialog();
            localBottomSheetDialog.setPosition(position);
            localBottomSheetDialog.setLocalTrack(activity.tempAlbum.getAlbumSongs().get(position));
            localBottomSheetDialog.setFragment("Album");
            localBottomSheetDialog.show(activity.getSupportFragmentManager(), "local_song_bottom_sheet");
            return true;
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
        }
    });
}
Also used : LocalTrackRecyclerAdapter(com.sdsmdg.harjot.MusicDNA.fragments.LocalMusicFragments.LocalTrackRecyclerAdapter) LocalTrack(com.sdsmdg.harjot.MusicDNA.models.LocalTrack) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) DefaultItemAnimator(android.support.v7.widget.DefaultItemAnimator) CustomLocalBottomSheetDialog(com.sdsmdg.harjot.MusicDNA.custombottomsheets.CustomLocalBottomSheetDialog) UnifiedTrack(com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack) RecyclerView(android.support.v7.widget.RecyclerView) ClickItemTouchListener(com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener)

Aggregations

DefaultItemAnimator (android.support.v7.widget.DefaultItemAnimator)14 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)14 RecyclerView (android.support.v7.widget.RecyclerView)14 View (android.view.View)14 ClickItemTouchListener (com.sdsmdg.harjot.MusicDNA.clickitemtouchlistener.ClickItemTouchListener)14 ImageView (android.widget.ImageView)12 TextView (android.widget.TextView)12 UnifiedTrack (com.sdsmdg.harjot.MusicDNA.models.UnifiedTrack)10 LocalTrack (com.sdsmdg.harjot.MusicDNA.models.LocalTrack)8 ItemTouchHelper (android.support.v7.widget.helper.ItemTouchHelper)4 Button (android.widget.Button)4 ShowcaseView (com.github.amlcurran.showcaseview.ShowcaseView)4 ViewTarget (com.github.amlcurran.showcaseview.targets.ViewTarget)4 SimpleItemTouchHelperCallback (com.sdsmdg.harjot.MusicDNA.itemtouchhelpers.SimpleItemTouchHelperCallback)4 Track (com.sdsmdg.harjot.MusicDNA.models.Track)4 MenuItem (android.view.MenuItem)3 CustomGeneralBottomSheetDialog (com.sdsmdg.harjot.MusicDNA.custombottomsheets.CustomGeneralBottomSheetDialog)3 CustomLocalBottomSheetDialog (com.sdsmdg.harjot.MusicDNA.custombottomsheets.CustomLocalBottomSheetDialog)3 LocalTrackRecyclerAdapter (com.sdsmdg.harjot.MusicDNA.fragments.LocalMusicFragments.LocalTrackRecyclerAdapter)3 Handler (android.os.Handler)2