본문 바로가기
Android

Android ListView Sorting

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

List의 데이터를 정렬함. 

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

 


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);

        }
    });
}
반응형

'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

댓글