총 게시물 39,238건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

Android_RecyclerView의 리스트 자동 초기화(?)가 됩니다

글쓴이 : n4u1 날짜 : 2018-09-18 (화) 23:29 조회 : 4332
글주소 : http://www.androidside.com/B49/170370
 
  No1 기술혁신 NXP반도체
반도체전문업체, 휴대전화, 가전, ID, 범용반도체, 소프트웨어, 반도체제품안내.
www.nxp.com
  서울게임아카데미
추천게임학원, 2018년 한국 소비자만족지수 1위, 고용노동부국비지원, 수강료조회
www.seoulgame.co.kr
  ANDROID 인터넷교보문고
ANDROID, 최대 14,000원 혜택, 온오프 통합포인트! 바로드림 배송혁명!
www.kyobobook.co.kr
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

안녕하세요.

SNS를 만들면서 공부중인 초보입니다..

사용자가 검색한 단어가 포함된 게시글을 추려서 recyclerView에 보여주려고 하고있습니다.

근데 순식간에 검색한 게시글이 보여졌다가 다시 전체 게시글이 보여집니다..


디버깅해보면서 봤는데

코드에서  contentDTOSS.add(contentDTO); 부분

contentDTOSS에 리스트들은 정상적으로 들어가고 recyclerView_result.setAdapter(postAdapterMyLike);

에서 postAdapterMyLike 아답터에도 잘들어가는걸로(?) 확인됐습니다.


검색결과가 없는 단어로 검색을 해보면 화면에 아무것도 나오지않습니다.

아마 contentDTOSS에 아무것도 들어가지 않아서 그렇게 되는거라고 생각이 드는데

왜 결과가 있으면 새로고침 되는것처럼 전체 게시글이 나오는걸까요...


HomeActivity에서는 전체 게시글이 보여지는 상태이고 HomeActivity와 같은 방식으로 아답터와 홀더를

만들어서 아래와같이 SearchResultActivity 에 넣은것인데... 왜 새로고침 되는현상이 나오는지 모르겠습니다....ㅠㅠ




public class SearchResultActivity extends AppCompatActivity {
    private FirebaseDatabase mSortingDatabase;
    private String searchCategory = "";
    private String searchTitle = "";

    final ArrayList<ContentDTO> contentDTOSS = new ArrayList<>();
    final PostAdapterMyLike postAdapterMyLike = new PostAdapterMyLike(this, contentDTOSS);


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


        Toolbar myToolbar = findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);

        if (getSupportActionBar() != null) {
            getSupportActionBar().setTitle(" ");
        }
        getSupportActionBar().setIcon(R.mipmap.ic_q_custom);
        getSupportActionBar().setDisplayShowHomeEnabled(true);

        mSortingDatabase = FirebaseDatabase.getInstance();
        searchTitle = getIntent().getStringExtra("searchTitle");
        searchCategory = getIntent().getStringExtra("searchCategory");
        final RecyclerView recyclerView_result = findViewById(R.id.recyclerView_result);
        LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
        mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mLayoutManager.isSmoothScrollbarEnabled();
        mLayoutManager.setStackFromEnd(true);
        mLayoutManager.setReverseLayout(true);
        recyclerView_result.setLayoutManager(mLayoutManager);

        recyclerView_result.setAdapter(postAdapterMyLike);
        postAdapterMyLike.notifyDataSetChanged();


        if (searchTitle == null) {
            mSortingDatabase.getReference().child("user_contents").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    contentDTOSS.clear();
                    Log.d("lkj why not??", "why not??");
                    Iterator<DataSnapshot> contentDTOIterator = dataSnapshot.getChildren().iterator();
                    while (contentDTOIterator.hasNext()) {
                        ContentDTO contentDTO = contentDTOIterator.next().getValue(ContentDTO.class);
                        if (contentDTO.contentType.contains(searchCategory)) {
                            contentDTOSS.add(contentDTO);
                        }
                    }
                    postAdapterMyLike.notifyDataSetChanged();
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        } else {
            mSortingDatabase.getReference().child("user_contents").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    contentDTOSS.clear();
                    Iterator<DataSnapshot> contentDTOIterator = dataSnapshot.getChildren().iterator();
                    while (contentDTOIterator.hasNext()) {
                        ContentDTO contentDTO = contentDTOIterator.next().getValue(ContentDTO.class);
                        if (contentDTO.title.contains(searchTitle)) {
                            contentDTOSS.add(contentDTO);
                        }
                    }
                    postAdapterMyLike.notifyDataSetChanged();
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }
    }




질문자가 자신의 포인트 10 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 8을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

안사 이쁜이 2018-09-18 (화) 23:29
축하드립니다. ;)
n4u1님은 안사 이쁜이에 당첨되어 3 포인트 지급되었습니다.
n4u1 2018-09-20 (목) 15:29

죄송합니다..

해결했습니다..

adapter를 잘못만들어서 그랬습니다..

ㅠㅠ

댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기