반응형
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 |
댓글