Форум программистов, компьютерный форум CyberForum.ru

Listview мультивыбор и одиночный - Android

Восстановить пароль Регистрация
 
Chipito
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 29
16.12.2012, 15:11     Listview мультивыбор и одиночный #1
Добрый день. Есть код, который выводит в listview папки и файлы на СД карте.
Сообственно проблема в том, что нужно для файлов мультивыбор, а для директорий обычный клик.
Java
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
private void getDir(String dirPath) {
        ListView lView = (ListView) findViewById (android.R.id.list);
        CheckBox Check = (CheckBox) findViewById (R.id.checkBox1);
    
        myPath.setText("Location: " + dirPath); // где мы сейчас
        item = new ArrayList<String>();
        path = new ArrayList<String>();
        File f = new File(dirPath);
        File[] files = f.listFiles(); // получаем список файлов
 
        // если мы не в корневой папке
        if (!dirPath.equals(root)) {
             HashMap<String, Object> map = new HashMap<String, Object>();
                map.clear();
            map.put("filedir", root);
            item.add(root);
            path.add(root);
            item.add("../");
            map.put("filedir", "../");
            path.add(f.getParent());
            mylist.add(map);
        }
 
        // формируем список папок и файлов для передачи адаптеру
        for (int i = 0; i < files.length; i++) {
             HashMap<String, Object> map = new HashMap<String, Object>();
            File file = files[i];
            path.add(file.getPath());
            if (file.isDirectory())
            {
                map.clear();
                item.add(file.getName() + "/");
                map.put("filedir",file.getName() + "/" );
                map.put("filecheck"," ");
                mylist.add(map);
                
            }
            else
            {
                map.clear();
                item.add(file.getName());
                map.put("filedir",file.getName());
                map.put("filecheck",Check);
                mylist.add(map);
    
            }
        }
 
        // Все готов. Можно выводить на экран список
        System.out.println(mylist);
         
          SimpleAdapter adapter = new SimpleAdapter(this,mylist,R.layout.listd,
                    new String[]{"filedir","filecheck"}, // массив названий
                    new int[]{ R.id.text3}    );
          setListAdapter(adapter);
Главный listview: (dir)
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/path"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
 
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
 
    <TextView
        android:id="@android:id/empty"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="No Data" />
 
</LinearLayout>
И listview с текстом и чекбоксами: (listd

XML
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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
 
    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="343dip"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    </RelativeLayout>
 
    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/relativeLayout1"
        android:text="CheckBox" />
 
 
    <TextView
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/checkBox1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/relativeLayout1"
        android:text="TextView" />
 
</RelativeLayout>
В таком случаи оно выводит чекбоксы и к файлам и к директориям.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 15:11     Listview мультивыбор и одиночный
Посмотрите здесь:

Разбиение ListView Android
Работа с Listview Android
Android Работа с Listview
Android ListView и мультивыбор при открытии активити
Android C JSON в ListView
Android Listview and scrollview
Android Редактирование listview
Android Не обновляется ListView
Адаптер и ListView Android
Android Кэш ListView
Android Обновление ListView
Scroll listview Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dubok79
 Аватар для dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
16.12.2012, 19:21     Listview мультивыбор и одиночный #2
Вы знаете, что именно является папкой или файлом, остается чекбоксы показывать только для файлов. Сделайте свой класс адаптера наследованный, например на BaseAdapter, в котором переопределите метод getView и в нем уже будете скрывать (или создавать) для нужных строк чекбоксы. А для сортировки я использовал Comparator.
Во вложении пример, который мне дали на этом форуме и он мне помог очень даже и вам должен помочь.
Вложения
Тип файла: zip testnewl.zip (904.0 Кб, 32 просмотров)
Chipito
0 / 0 / 0
Регистрация: 20.11.2011
Сообщений: 29
16.12.2012, 20:48  [ТС]     Listview мультивыбор и одиночный #3
Огромное спасибо! Работает.
Yandex
Объявления
16.12.2012, 20:48     Listview мультивыбор и одиночный
Ответ Создать тему
Опции темы

Текущее время: 15:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru