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

조회수 2160회

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 안에서 스크롤이 밑으로 갔을 때를 구현한 것입니다.

1 답변

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

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)