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

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

글쓴이 : n4u1 날짜 : 2018-09-18 (화) 23:29 조회 : 1132
글주소 : http://www.androidside.com/B49/170370
 
  반도체전문업체 NXP반도체
반도체전문업체, 휴대전화, 가전, ID, 범용반도체, 소프트웨어, 반도체제품안내.
www.nxp.com
  엠브이테크
임베디드 개발용역 및 양산 Rockchip Freescale 엑시노스
www.mvtech.or.kr
  서울게임아카데미
추천게임학원, 2018년 한국 소비자만족지수 1위, 고용노동부국비지원, 수강료조회
www.seoulgame.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 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기