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

Множественный выбор в списке - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Где почитать про установку межстраничного баннера http://www.cyberforum.ru/android-dev/thread1254235.html
Добрый день ! Решил установить межстраничный баннер, но не могу найти нормальный ресурс где описывается установка, подскажите пожалуйста что использовали вы.
Android Object Detector Нужно реализовать детектор объектов, имеющихся на изображении (неважно, был ли битмап извлечён из файла или это превью-фрейм с камеры), с использованием библиотеки OpenCV. Т.е. на основе неких правил уметь отделять одно от другого. Знаю, что для этого используется класс FeatureDetector, который может быть нескольких типов: SURF, ORB, FAST, например, но не понимаю принцип его работы. Для чего... http://www.cyberforum.ru/android-dev/thread1254216.html
Как сделать, чтобы приведенный код выполнялся в событии кнопки Android
Помогите перевести в андроид следующий код: public class Game extends Activity { public static void main(String args) throws IOException{ ArrayList<String> serverip = new ArrayList<String>(); Scanner diskScaner = new Scanner (new File ("external_servers.txt")); while (diskScaner.hasNext()){ serverip.add(diskScaner.nextLine()); }
Android Запустить приложение во время входящего звонка
Здравствуйте. У меня следующая проблема: пытаюсь запустить активити во время звонка, но он сворачивает приложение и показывает стандартную звонилку. После окончания звонка вновь открывается активити. Можно ли как-нибудь задержать активити на экране, чтобы оно закрывалось/сворачивалось только по желанию пользователя? Спасибо.
Android Анимация http://www.cyberforum.ru/android-dev/thread1253874.html
private void setWeigtnMemory(float k,int visibility){ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 0); float v = context.getResources().getDisplayMetrics().density; params.weight = k; params.topMargin = (int) (20*v); params.leftMargin = (int) (10*v); params.rightMargin = (int)...
Android Не устанавливается платформа через SDK Manager Скачал, поставил стандартный Eclipse. Не могу установить платформу API19. Выдает ошибку Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: peer not authenticated. Можно ли оффлайн установить данную платформу? подробнее

Показать сообщение отдельно
Max_92
25 / 7 / 2
Регистрация: 26.04.2010
Сообщений: 205
11.09.2014, 01:06     Множественный выбор в списке
Ты передал адаптеру кастомную разметку R.layout.list, зачем тогда android.R.simple_list_item_multiple_choice ? В своей разметке добавляй CheckBox в нужном месте. В колбеке onItemClick как вариант можно чекать чекбокс элемента в выбранной позиции. Но в любом случае, если ты захочешь узнать, какие чекбоксы чекнуты, метод getCheckedItemPositions() ListView будет возвращать неверное значение.
А вообще в нестандандартных случаях надо создавать свой адаптер на основе подходящего для данной задачи, и в нём переопределять метод public View getView(int position, View convertView, ViewGroup parent), который вызывается всякий раз, когда необходимо прорисовать вьюхи элемента конкретной позиции, столько, сколько влезает на экран. Т.е. например ты создал свой адаптер с нужным набором данных, после чего выставил этот адаптер для ListView, и автоматически сработал, 7 раз например, колбек getView, в котором ты сам выставляешь содержимое View элементов. Аналогично происходит при прокрутке и при ручном вызове notifyDataSetChanged(), когда это необходимо. Также в филдах можно сделать массив / hashmap / list, содержащий индексы элементов <-> boolean чекнут/не чекнут, и тогда в getView смотря в этот набор данных ты будешь вызывать setChecked(). Для того, чтобы узнать, какие элементы чекнуты, можно просто спросить об этом свой адаптер, получив этот самый набор boolean'ов. Вот на этом примере, надеюсь, будет понятно.

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import java.util.ArrayList;
 
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
 
public class FoldersArrayAdapter extends ArrayAdapter<String> {
 
    private static final String TAG = "FoldersArrayAdapter";
 
    private final LayoutInflater mInflater;
    // private final Context mContext;
    private final int layout;
    private final ArrayList<String> foldersPathsList;
 
    private final boolean checkedPositions[];
 
    public FoldersArrayAdapter(Context context, int layout, ArrayList<String> foldersList) {
        super(context, layout, foldersList);
        Log.d(TAG, "FoldersArrayAdapter :: FoldersArrayAdapter()");
 
        // mContext = context;
        this.layout = layout;
        foldersPathsList = foldersList;
 
        mInflater = LayoutInflater.from(context);
 
        checkedPositions = new boolean[foldersList.size()];
        for (int i = 0; i < checkedPositions.length; i++) {
            checkedPositions[i] = false;
        }
    }
 
    // if callback getView is overriden, callbacks newView and bindView will not
    // be called
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
 
        // convertView - The old view to reuse, if possible
        // position - The position of the item within
        // listprefs_choice_mode_entry_valuesthe adapter's data set of
        // the item whose view we want.
        // parent - The parent that this view will eventually be attached to
 
        ViewHolder viewHolder;
 
        if (convertView == null) {
 
            if ((layout == android.R.layout.simple_list_item_single_choice)
                    || (layout == android.R.layout.simple_list_item_multiple_choice)) {
                convertView = mInflater.inflate(layout, parent, false);
            } else {
                return null;
            }
 
            viewHolder = new ViewHolder();
            viewHolder.folderNameView = (CheckedTextView) convertView.findViewById(android.R.id.text1);
 
            convertView.setTag(viewHolder);
 
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
 
        if (foldersPathsList != null) {
 
            ViewGroup.LayoutParams layoutParams = viewHolder.folderNameView.getLayoutParams();
            layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT;
            // layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
            viewHolder.folderNameView.setLayoutParams(layoutParams);
 
            viewHolder.folderNameView.setText(foldersPathsList.get(position));
 
            if (layout == android.R.layout.simple_list_item_multiple_choice) {
                viewHolder.folderNameView.setChecked(checkedPositions[position]);
            }
 
        }
 
        return convertView;
    }
 
    public void setCheckPosition(int position, boolean checked) {
        checkedPositions[position] = checked;
    }
 
    private static class ViewHolder {
        CheckedTextView folderNameView;
    }
 
}
Добавлено через 7 минут
корректировка небольшая

Java
1
2
3
4
5
6
7
8
9
10
11
    private final boolean[] checkedPositions;
 
        public boolean[] getCheckedPositions() {
        return checkedPositions;
        }
 
        public void setCheckPosition(int position, boolean checked) {
                if (position >= 0 && position < checkedPositions.length) {
        checkedPositions[position] = checked;
                }
    }
 
Текущее время: 14:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru