button을 다시 눌렀을 경우 recyclerview 갱신 질문입니다.


button을 클릭했을 때 asynctask.execute()해서 url에서 json을 파싱한 걸 recyclerview에다가 보여줍니다. 총 5개의 버튼이 있고 버튼 한 개마다 recyclerview가 하나씩 있습니다. 여기서 그냥 버튼 한번 누르고 스크롤해서 계속 보여주는데는 문제가 없는데 스크롤을 했다가 다른 버튼을 누르면 스크롤이 되지 않고 처음에 보여주는 데이터만 보여줍니다. ㅜ adapter 갱신하는데에 문제가 있는 것 같은데 도와주세요 ㅜ

    ladderbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RankingRecyclerViewItemList.clear();
            adapter.notifyDataSetChanged();
            KdaRankingrv.setVisibility(View.GONE);
            rankingrv.setVisibility(View.VISIBLE);
            new ladderAsyncTask().execute(url1);
        }
    });

    killDeathbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            RankingRecyclerViewItemList.clear();
            adapter.notifyDataSetChanged();
            rankingrv.setVisibility(View.GONE);
            KdaRankingrv.setVisibility(View.VISIBLE);
            new kdaAsyncTask().execute(url2);
        }
    });

이건 버튼을 클릭 했을 때 입니다.

            adapter.notifyDataSetChanged();
            rankingrv.addOnScrollListener(new RecyclerView.OnScrollListener() {
                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);

                    visibleItemCount = rankingrv.getChildCount();
                    totalItemCount = linearLayoutManager.getItemCount();
                    firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();

                    if (loading) {
                        if (totalItemCount > previousTotal) {
                            loading = false;
                            previousTotal = totalItemCount;
                        }
                    }
                    if (!loading && (totalItemCount - visibleItemCount)
                            <= (firstVisibleItem + visibleThreshold)) {
                        // End has been reached

                        Log.i("Yaeye!", "end called");

                        new ladderAsyncTask2().execute(url1);
                        // Do something

                        loading = true;
                    }

                }
            });

이건 asynctask에서 postexecute 안에서 스크롤이 밑으로 갔을 때를 구현한 것입니다.

  • 2016년 07월 26일에 작성됨
    지금 공익근무 중이고 안드로이드를 공부하고 있습니다.

조회수 228


1 답변


저도 마찬가지 문제로 고민중인데 혹시나 먼저 풀면 글좀 부탁드릴게요~^


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close