본문 바로가기
Android 기법/# Study

[Android/안드로이드]GridView에서 중복현상 해결

by 퍼즐잎 2017. 2. 12.

BaseAdapter을 이용하여 


GridView를 사용할 때 중복돼서 


나타나는 문제가 발생한다.




많이 유명한 문제라고 하는데


아래와 같은 방법으로 해결할 수 있다.


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class PokeDexAdapter extends BaseAdapter {
    ...
 
    @Override
    public int getCount() {
        return pokeObjects.size();
    }
 
    @Override
    public Object getItem(int position) {
        return pokeObjects.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
    }
 
 
    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
        if(convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.pokedex_grid, parent, false);
        }
        //아이템 추가시 convertView가 null이 아닐때에도 아이템을 추가하도록 만든다.
 
            TextView test1 = (TextView)convertView.findViewById(R.id.test1);
            TextView test2 = (TextView)convertView.findViewById(R.id.test2);
            TextView test3 = (TextView)convertView.findViewById(R.id.test3);
            TextView test4 = (TextView)convertView.findViewById(R.id.test4);
            TextView test5 = (TextView)convertView.findViewById(R.id.test5);
            TextView test6 = (TextView)convertView.findViewById(R.id.test6);
            ImageView test00 = (ImageView)convertView.findViewById(R.id.test00);
            
            ...
 
        return convertView;
    }
}
cs


null이 아닐 때에도 View를 생성하면


아주 미세하게 끊기는 느낌이 든다.


댓글