본문 바로가기
End/#5 스터디용 단어 앱

[Android/안드로이드]단어 암기용/단어장 앱 만들기(1)[ViewPager/PagerAdapter 갱신/refresh]

by 퍼즐잎 2017. 1. 22.

요즘 토익 공부를 하면서


학원에서 하는 스터디도 있고, 영어 단어를 외울 일이 많아서


내가 영어 단어를 외울 때 사용할 단어장 앱을 만들게 되었다.






간단하게 단어가 하나씩 뜻과 함께 나타나고


단어만 보거나, 뜻만 볼 수 있게 만들고 있다.


그리고 단어를 누르면 발음을 들려주도록 기획하고 있다.





빠르게 제작할 목적이라서 노트에 간략하게 기획만 하고 제작에 들어갔다.










단어 버튼을 누르면 단어가 사라지고,


뜻 버튼을 누르면 뜻이 사라져야 하는데






ViewPager에서는 양쪽의 View를 미리로딩을해서


현재 View에서 사라지면 바로 다음이나 이전 View에서는


그대로 남아 있는 문제가 발생했다. 






구글링을 통해서 찾은 해결책은


getItemPosition 함수를 다음과 같이 재 정의 하면


notifyDataSetChange 함수가 호출 될 때 


페이지를 새로 그리기 때문에 문제를 해결 할 수 있었다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
    @Override
    public Object instantiateItem(final ViewGroup container, final int position) {
       
        ...
 
        Button wordDel = (Button)layout.findViewById(R.id.wordDel);
        wordDel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextStatus.wordStatus = !TextStatus.wordStatus;
                textWord.setTextColor(Color.parseColor(wordColor()));
                notifyDataSetChanged();
            }
        });
 
        ...
    }
 
    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
    }
 
    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
cs



댓글