본문 바로가기
Android

Android ListView Sorting

by 캡틴노랑이 2021. 1. 3.
반응형

List의 데이터를 정렬함. 

2개의 데이터를 비교(파일, 폴더 구분, 이름)

 

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<code>
private ListView lvListView;
private ArrayList arrFileData;
 
lvListView = (ListView)findViewById(R.id.lvListView);
 
 
//정렬 비교 로직(폴더 파일 오름 차순 )
private Comparator folderNfileSorting = new Comparator() {
    @Override
    public int compare(FileData data1, FileData data2) {
        int result ;
 
        if (data1.getIsFile() < data2.getIsFile())
            result = -1;
        else if (data1.getIsFile() == data2.getIsFile())
            result = data1.getName().compareTo(data2.getName()) ;
        else
            result = 1;
 
        return result ;
    }
} ;
 
 
 
protected void ListView()
{
    adp = new FileTreeListViewAdapter(arrFileData);
    lvListView.setAdapter(adp);
 
    //리스트뷰의 아이템을 클릭시 해당 아이템의 문자열을 가져오기 위한 처리
    lvListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
 
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
            Log.d("Data", ((FileData)adapterView.getItemAtPosition(position)).getName());//로그 남기기
            //텍스트뷰에 출력
            tvTest.setText("결과 : " + ((FileData)adapterView.getItemAtPosition(position)).getName());
 
 
            File directory = new File(((FileData)adapterView.getItemAtPosition(position)).getFullDir());
            File[] files = directory.listFiles();
 
            arrFileSub = new ArrayList();
 
            for (File f : files) {
                String strName = f.getName();
                String strFullDir = f.getAbsolutePath();
 
                FileData fd = new FileData(strName, strFullDir, f.isFile() ? 1 : 0);
                arrFileSub.add(fd);
            }
 
            Collections.sort(arrFileSub, folderNfileSorting) ; //상단에 정의
 
            FileTreeListViewAdapter adpSub = new FileTreeListViewAdapter(arrFileSub);
            lvListView.setAdapter(adpSub);
 
        }
    });
}
</code>
반응형

'Android' 카테고리의 다른 글

Bluetooth file & text transfer #2 server  (4) 2021.03.17
Bluetooth file & text transfer #1 etc  (6) 2021.03.17
Android Error Message  (2) 2021.01.01
자주 쓰는 코드 모음.  (4) 2020.10.30
Timer  (3) 2020.10.14