뒤로 버튼을 눌렀을 때 onResume 및 onPause 메서드를 사용하는 방법

Arasu P

json 웹 서비스를 사용하는 recyclerview 용 사용자 지정 어댑터가 있습니다. URL을 하나씩 구문 분석하고 onscrolllistener ()를 사용하여 cardview를 표시해야했습니다. 내 질문은 뒤로 버튼을 눌렀을 때 최근 앱에서 열면 (onResume이 호출되었을 때) onPause가 호출되었을 때 호출 된 URL 만 표시됩니다. 따라서 onResume을 호출 할 때 목록보기를 어떻게 새로 고칠 수 있습니까?

Thanks in Advance,

Here my code synepet..

public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private GridLayoutManager mGridManager;
    private ProgressBar mProgressBar;

    private static String url = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=UCGyZswzm4G-wEfRQHgMSAuw&maxResults=50&key=AIzaSyCi0ApXYk08YpzyEO8jYJanaud-Epti6ks&pageToken=CDIQAQ";

    JSONArray contacts = null;
    private String mNextToken;
    JSONObject jsonObj;
    private boolean loading = true;
    int visibleItemCount, totalItemCount, pastVisiblesItems;
    private List<PlayListItem> mContactList = new ArrayList<PlayListItem>();
    private PlayListItem mContact;
    private Bundle mbundle;
    String name2 = "Arasu";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
        mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        mRecyclerView.setHasFixedSize(true);

        // Calling async task to get json
        new GetContacts().execute();

        mAdapter = new CardAdapter(MainActivity.this, mContactList);
        mRecyclerView.setAdapter(mAdapter);
        getScreenOrientation();
    }

    @Override
    public void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        System.out.println("Size2---->" + mContactList.size());
    }


private class GetContacts extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Showing progress dialog
            mProgressBar.setVisibility(View.VISIBLE);
            mProgressBar.setMax(100);
        }

        @Override
        protected Void doInBackground(Void... arg0) {
            // Creating service handler class instance
            ServiceHandler sh = new ServiceHandler();

            // Making a request to url and getting response
            String jsonArray = sh.makeServiceCall(url, ServiceHandler.GET);

            //Log.d("Response: ", "> " + jsonArray);
            if (jsonArray != null) {
                try {
                    jsonObj = new JSONObject(jsonArray);

                    if (jsonObj.has("nextPageToken")) {
                        loading = true;
                        mNextToken = jsonObj.getString("nextPageToken");
                    } else {
                        loading = false;
                    }
                    // Getting JSON Array node
                    contacts = jsonObj.getJSONArray("items");

                    // looping through All Contacts
                    for (int i = 0; i < contacts.length(); i++) {
                        JSONObject c = contacts.getJSONObject(i);
                        String title = c.getJSONObject("snippet").getString("title");
                        String time = c.getJSONObject("snippet").getString("publishedAt");
                        String playlist_id = c.get("id").toString();

                        // Find Screen size and set the Image for this size
                        DisplayMetrics dm = new DisplayMetrics();
                        getWindowManager().getDefaultDisplay().getMetrics(dm);
                        double x = Math.pow(dm.widthPixels / dm.xdpi, 2);
                        double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
                        double screenInches = Math.sqrt(x + y);
                        int inch = (int) Math.round(screenInches);
                        String image = null;

                        try {
                            if (inch <= 4) {
                                image = c.getJSONObject("snippet").getJSONObject("thumbnails").getJSONObject("medium").getString("url");
                            } else if (inch > 4 && inch <= 6) {
                                image = c.getJSONObject("snippet").getJSONObject("thumbnails").getJSONObject("medium").getString("url");
                            } else if (inch > 6 && inch <= 10) {
                                image = c.getJSONObject("snippet").getJSONObject("thumbnails").getJSONObject("medium").getString("url");
                            } else {
                                image = c.getJSONObject("snippet").getJSONObject("thumbnails").getJSONObject("default").getString("url");
                            }
                        } catch (IndexOutOfBoundsException e) {
                            e.printStackTrace();
                        }

                        mContact = new PlayListItem();
                        mContact.setmTitle(title);
                        mContact.setmID(playlist_id);
                        mContact.setmTime(time);
                        mContact.setmThumbnailURL(image);
                        mContact.setmNextToken(mNextToken);
                        mContactList.add(mContact);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                Log.e("ServiceHandler", "Couldn't get any data from the url");
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            // Dismiss the progress dialog
            if (mProgressBar.isShown())
                mProgressBar.setVisibility(ProgressBar.GONE);
            mAdapter.notifyDataSetChanged();

            mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {

                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);
                    visibleItemCount = mGridManager.getChildCount();
                    totalItemCount = mGridManager.getItemCount();
                    pastVisiblesItems = mGridManager.findFirstVisibleItemPosition();

                    if (loading) {
                        if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {

                            Log.v("...", "Last Item Wow !");
                            if (jsonObj.has("nextPageToken")) {
                                url = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=UCGyZswzm4G-wEfRQHgMSAuw&maxResults=50&key=AIzaSyCi0ApXYk08YpzyEO8jYJanaud-Epti6ks&pageToken=" + mNextToken;
                                System.out.println("url--->" + url);
                                new GetContacts().execute();
                            } else {
                                url = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=UCGyZswzm4G-wEfRQHgMSAuw&maxResults=50&key=AIzaSyCi0ApXYk08YpzyEO8jYJanaud-Epti6ks&pageToken=" + mNextToken;
                                System.out.println("url----else--->" + url);
                                new GetContacts().execute();
                            }
                            loading = false;
                        }
                    }
                }
            });
        }
    }
}

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {
    private List<PlayListItem> mItems;
    private Activity activity;
    public ImageLoader imageLoader;
    public CardAdapter(Activity activity, List<PlayListItem> items) {
        this.activity = activity;
        this.mItems = items;
        imageLoader = new ImageLoader(activity.getApplicationContext());
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.recycler_outer_playlist_cardview, viewGroup, false);
        ViewHolder viewHolder = new ViewHolder(v);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, final int i) {
        System.out.println("Title Value is----------->"+mItems.get(0));
        PlayListItem nature = mItems.get(i);

        Log.d("Title Value is","----------->"+nature.getmTitle());
        viewHolder.tvTitle.setText(nature.getmTitle());

        final String playListID = nature.getmID();
        final String thumnailsURL = nature.getmThumbnailURL();

        final Calendar c = Calendar.getInstance();
        int cur_year = c.get(Calendar.YEAR);
        int cur_month = c.get(Calendar.MONTH) + 1;
        int cur_day = c.get(Calendar.DAY_OF_MONTH);
        int cur_hour = c.get(Calendar.HOUR_OF_DAY);
        int cur_minute = c.get(Calendar.MINUTE);

        // Getting updated date from url
        String string = nature.getmTime();
        String[] parts = string.split("-");
        String part1 = parts[0]; // 004
        String part2 = parts[1]; // 034556
        String part3 = parts[2];
        String[] part4 = part3.split("T");
        String part5 = part4[0];
        String part6 = part4[1];
        // Toast.makeText(activity, "Given Date is : " + part1 + "/" + part2 + "/" + part3, Toast.LENGTH_LONG).show();

        // Log.d("Updated Current Day", part5);
        int giv_yr = Integer.parseInt(part1);
        int giv_mnt = Integer.parseInt(part2);
        int giv_day = Integer.parseInt(part5);

        // Difference Two dates
        int day_yr = 0, day_mnt = 0, day_day = 0;

        if (cur_year >= giv_yr) {
            if (cur_year >= giv_yr) {
                day_yr = cur_year - giv_yr;
            } else {
                day_yr = giv_yr - cur_year;
            }
            if (cur_month >= giv_mnt) {
                day_mnt = cur_month - giv_mnt;
            } else {
                day_mnt = giv_mnt - cur_month;
            }
            if (cur_day >= giv_day) {
                day_day = cur_day - giv_day;
            } else {
                day_day = giv_day - cur_day;
            }
        }
        String yr = Integer.toString(day_yr);
        String mnt = Integer.toString(day_mnt);
        String days = Integer.toString(day_day);

        if (day_day == 0)
            viewHolder.tvTime.setText("Updated Today");
        else if (day_day < 7)
            viewHolder.tvTime.setText("Updated " + days + " Days ago");
        else if (day_day < 30) {
            int week = day_day / 7;
            String Week = Integer.toString(week);
            viewHolder.tvTime.setText("Updated " + Week + " Weeks ago");
        } else {
            viewHolder.tvTime.setText("Updated " + mnt + " Months ago");
        }

        //imageLoader.DisplayImage(nature.getmThumbnailURL(), viewHolder.imgThumbnail);
        Picasso.with(activity)
                .load(nature.getmThumbnailURL())
                /*.placeholder(R.drawable.my_thumnail)*/
               .into(viewHolder.imgThumbnail);

        viewHolder.item_view.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(activity, VideoPlayActivity.class);
                intent.putExtra("PLAYLIST_ID", playListID);
                intent.putExtra("THUMNAIL_URL", thumnailsURL);
                v.getContext().startActivity(intent);
            }
        });
        /*System.out.println("URL -------------->"+nature.getmThumbnailURL());
        // String img_url = nature.getmThumbnailURL();
        try {
            URL url = new URL(nature.getmThumbnailURL());
            Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
            System.out.println("Image bmp -------------->"+bmp);
            //imageView.setImageBitmap(bmp);
            viewHolder.imgThumbnail.setImageBitmap(bmp);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }*/
    }

    @Override
    public int getItemCount() {
        return mItems.size();
    }
    class ViewHolder extends RecyclerView.ViewHolder {
        public ImageView imgThumbnail;
        public TextView tvTitle;
        public TextView tvID;
        public TextView tvTime;
        public View item_view;
        public ViewHolder(View itemView) {
            super(itemView);
            imgThumbnail = (ImageView) itemView.findViewById(R.id.img_thumbnail);
            tvTitle = (TextView) itemView.findViewById(R.id.tv_title);
            //tvID = (TextView) itemView.findViewById(R.id.tv_id);
            tvTime = (TextView) itemView.findViewById(R.id.tv_time);
            item_view = itemView;
        }
    }
}
Arasu P
I made a small mistake declaring String URL as static but it should be final also assign to another String variable. Finally set the adapter and notifyDataSetChanged where placed in onStart().


private final static String URL = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=UCGyZswzm4G-wEfRQHgMSAuw&maxResults=50&key=AIzaSyCi0ApXYk08YpzyEO8jYJanaud-Epti6ks&pageToken=CDIQAQ";
    private String url = URL;

    JSONArray contacts = null;
    private String mNextToken;
    JSONObject jsonObj;
    private boolean loading = true;
    int visibleItemCount, totalItemCount, pastVisiblesItems;
    private List<PlayListItem> mContactList;
    private PlayListItem mContact;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
        mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        mRecyclerView.setHasFixedSize(true);

        // Calling async task to get json
        if (mContactList == null)
            mContactList = new ArrayList<PlayListItem>();
        System.out.println("onCreate :: Size2---->" + mContactList.size());
    }

    @Override
    protected void onStart() {
        super.onStart();
        if (mContactList != null)
            mContactList.clear();
        url = URL;
        new GetContacts().execute();
        if (mAdapter == null)
            mAdapter = new CardAdapter(MainActivity.this, mContactList);
        mRecyclerView.setAdapter(mAdapter);
        mAdapter.notifyDataSetChanged();
        getScreenOrientation();
        System.out.println("onStart :: Size2---->" + mContactList.size());
    }

    @Override
    protected void onResume() {

        ActivitySwitcher.animationIn(findViewById(R.id.container_first),
                getWindowManager());
        super.onResume();
        System.out.println("onResume :: Size2---->" + mContactList.size());
        mAdapter.notifyDataSetChanged();
    }

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

에뮬레이터의 뒤로 버튼을 눌렀을 때 메서드를 호출하는 방법

분류에서Dev

뒤로 버튼을 눌렀을 때 실제로 잡는 방법?

분류에서Dev

안드로이드-안드로이드에서 버튼을 눌렀을 때 카메라를 여는 방법?

분류에서Dev

뒤로 버튼을 눌렀을 때 기존 활동을 확인하는 방법

분류에서Dev

액션 바 또는 기본 제공 뒤로 버튼을 눌렀을 때 인 텐트를 시작하는 방법

분류에서Dev

앱바 뒤로 버튼을 눌렀을 때 앱 종료를 확인하는 방법

분류에서Dev

전체 애플리케이션에서 뒤로 버튼을 눌렀을 때 사운드를 추가하는 방법

분류에서Dev

Android에서 이미지를 회전하고 버튼을 눌렀을 때 무작위로 중지하는 방법

분류에서Dev

화면 버튼을 눌렀을 때 menuInflator로 메뉴를 여는 방법은 무엇입니까?

분류에서Dev

버튼을 눌렀을 때 애니메이션을 중지하는 방법

분류에서Dev

JavaFX에서 버튼을 눌렀을 때 이미지를 표시하는 방법

분류에서Dev

Kivy에서 버튼을 눌렀을 때 텍스트를 표시하는 방법

분류에서Dev

버튼을 눌렀을 때 오디오를 재생하는 방법

분류에서Dev

옵션 버튼을 눌렀을 때 토스트를 호출하는 방법

분류에서Dev

뒤로 키를 눌렀을 때 앱을 종료하는 대신 이전 화면으로 돌아가는 방법

분류에서Dev

버튼을 눌렀을 때 강조 표시하는 방법

분류에서Dev

조각에서 뒤로 버튼을 눌렀 음을 Activity에 알리는 방법은 무엇입니까?

분류에서Dev

뒤로 버튼을 눌렀을 때 GridView가 지워짐 (키보드가 표시되는 동안)

분류에서Dev

키보드를 반환하기 전에 사용자가 버튼을 눌렀을 때 입력 된 텍스트에 버튼의 동작을 적용하는 방법

분류에서Dev

Up 버튼을 눌렀을 때 실행되는 방법

분류에서Dev

LibGDX : Android 뒤로 버튼을 눌렀는지 시뮬레이션하는 방법

분류에서Dev

버튼을 두 번째로 눌렀을 때 즉, 선택 / 선택된 단계에서 기본 단계로 애니메이션을 되 돌리는 방법

분류에서Dev

배경색으로 둥근 버튼을 설정하고 눌렀을 때 색상을 변경하는 방법

분류에서Dev

Server Validate를 사용할 때 어떤 이미지 버튼을 눌렀는지 찾는 방법

분류에서Dev

Server Validate를 사용할 때 어떤 이미지 버튼을 눌렀는지 찾는 방법

분류에서Dev

Swift 3 : UI 버튼을 눌렀을 때 Core Data의 단일 레코드를 삭제하는 방법

분류에서Dev

kivy로 버튼을 눌렀을 때 공백을 변경하는 방법은 무엇입니까?

분류에서Dev

Android에서 버튼을 눌렀을 때 팝업을 만드는 방법은 무엇입니까?

분류에서Dev

뒤로 버튼을 눌렀을 때 JSP 애플리케이션을 로그 아웃하고 리디렉션하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    에뮬레이터의 뒤로 버튼을 눌렀을 때 메서드를 호출하는 방법

  2. 2

    뒤로 버튼을 눌렀을 때 실제로 잡는 방법?

  3. 3

    안드로이드-안드로이드에서 버튼을 눌렀을 때 카메라를 여는 방법?

  4. 4

    뒤로 버튼을 눌렀을 때 기존 활동을 확인하는 방법

  5. 5

    액션 바 또는 기본 제공 뒤로 버튼을 눌렀을 때 인 텐트를 시작하는 방법

  6. 6

    앱바 뒤로 버튼을 눌렀을 때 앱 종료를 확인하는 방법

  7. 7

    전체 애플리케이션에서 뒤로 버튼을 눌렀을 때 사운드를 추가하는 방법

  8. 8

    Android에서 이미지를 회전하고 버튼을 눌렀을 때 무작위로 중지하는 방법

  9. 9

    화면 버튼을 눌렀을 때 menuInflator로 메뉴를 여는 방법은 무엇입니까?

  10. 10

    버튼을 눌렀을 때 애니메이션을 중지하는 방법

  11. 11

    JavaFX에서 버튼을 눌렀을 때 이미지를 표시하는 방법

  12. 12

    Kivy에서 버튼을 눌렀을 때 텍스트를 표시하는 방법

  13. 13

    버튼을 눌렀을 때 오디오를 재생하는 방법

  14. 14

    옵션 버튼을 눌렀을 때 토스트를 호출하는 방법

  15. 15

    뒤로 키를 눌렀을 때 앱을 종료하는 대신 이전 화면으로 돌아가는 방법

  16. 16

    버튼을 눌렀을 때 강조 표시하는 방법

  17. 17

    조각에서 뒤로 버튼을 눌렀 음을 Activity에 알리는 방법은 무엇입니까?

  18. 18

    뒤로 버튼을 눌렀을 때 GridView가 지워짐 (키보드가 표시되는 동안)

  19. 19

    키보드를 반환하기 전에 사용자가 버튼을 눌렀을 때 입력 된 텍스트에 버튼의 동작을 적용하는 방법

  20. 20

    Up 버튼을 눌렀을 때 실행되는 방법

  21. 21

    LibGDX : Android 뒤로 버튼을 눌렀는지 시뮬레이션하는 방법

  22. 22

    버튼을 두 번째로 눌렀을 때 즉, 선택 / 선택된 단계에서 기본 단계로 애니메이션을 되 돌리는 방법

  23. 23

    배경색으로 둥근 버튼을 설정하고 눌렀을 때 색상을 변경하는 방법

  24. 24

    Server Validate를 사용할 때 어떤 이미지 버튼을 눌렀는지 찾는 방법

  25. 25

    Server Validate를 사용할 때 어떤 이미지 버튼을 눌렀는지 찾는 방법

  26. 26

    Swift 3 : UI 버튼을 눌렀을 때 Core Data의 단일 레코드를 삭제하는 방법

  27. 27

    kivy로 버튼을 눌렀을 때 공백을 변경하는 방법은 무엇입니까?

  28. 28

    Android에서 버튼을 눌렀을 때 팝업을 만드는 방법은 무엇입니까?

  29. 29

    뒤로 버튼을 눌렀을 때 JSP 애플리케이션을 로그 아웃하고 리디렉션하는 방법은 무엇입니까?

뜨겁다태그

보관