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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Yulunga
76 / 69 / 16
Регистрация: 22.04.2013
Сообщений: 387
Завершенные тесты: 1
#1

БД или Enum? Плюс выбрать рандомно - Android

19.01.2015, 12:00. Просмотров 361. Ответов 7
Метки нет (Все метки)

приветствую!
на одном экране 24 кнопки(сделал кнопки потому, что они нажимаются). 24 разных чего-то.
задача : выбрать случайным образом из них какое-то количество. опции - можно закрепить кнопку, тогда она точно будет участвовать в "рандоме". можно наоборот открепить, тогда она точно не будет выбрана.
вопрос 1 - доступа к интернету нет, поэтому можно лучше сделать через Енум ? хотя всего будет 200 таких строчек.( на других экранах ) . или всё-таки базу данных тем не менее? (

вопрос два - как лучше сделать ? отдельное поле с тремя значениями(0-1-2) например 0 - не выбрано, 1 - выбрано, 2 - нельзя выбрать. или как ?
сорри, что много букв
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sony17
28 / 28 / 6
Регистрация: 24.05.2013
Сообщений: 157
20.01.2015, 11:08     БД или Enum? Плюс выбрать рандомно #2
Че? Нифига не понял
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
20.01.2015, 11:41     БД или Enum? Плюс выбрать рандомно #3
Попробуйте хорошенько сформулировать то, что нужно сделать. Я честно перечитывал ваше сообщение раз пять но мало чего понял. При чем тут вообще интернет и база данных?
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
20.01.2015, 11:44     БД или Enum? Плюс выбрать рандомно #4

Не по теме:

У Пети 5 яблок, у Маши - 3. Сколько яблок у Васи?


Напишите понятнее, в чем проблема?
Yulunga
76 / 69 / 16
Регистрация: 22.04.2013
Сообщений: 387
Завершенные тесты: 1
20.01.2015, 12:01  [ТС]     БД или Enum? Плюс выбрать рандомно #5
какое редкое единодушие )
я "схитрил" и задал два вопроса разных в одном посте. нарушив, наверно.
окей, извиняюсь и тогда задайте, пожалуйста, общее направление, как делать.

есть список из 24 позиций.
как список его использовать неудобно(мне), удобно сделать 8 рядов по 3 кнопки.
каждй элемент(кнопку) можно привести в 3 состояния : "выбрано", "нельзя выбрать", "неизвестно" ( по умолчанию "неизвестно" ).
после чего нажать кнопочку и случайным образом выбрать 10 элементов ( "выбрано" должно быть выбрано в любом случае, "нельзя выбрать" не должно быть выбрано, остальное всё равно ) .
как оптимальнее это сделать ?

про БД и инет замнём для ясности.
вот. вроде яснее. спасибо.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 596
20.01.2015, 12:13     БД или Enum? Плюс выбрать рандомно #6

Не по теме:

Мда... все равно не до конца понял


Ну, если Вам не удобен список по какой-то причине, то сделайте двумерный массив, в него прописывайте состояние, если число кнопок заранее известно, то в списке нет особой надобности.
Или абстрактный класс и от него три потомка, если к ООП строго относитесь, а далее двумерный массив с этим типом.

Если нужна ссылка на кнопку, то можете в класс еще указатель добавить
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
20.01.2015, 13:18     БД или Enum? Плюс выбрать рандомно #7
Наследуете свой класс от Button, немножко дописываете:
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
public class MyButton extends Button {
 
    public static final int STATUS_UNPICKED = 0;
    public static final int STATUS_PICKED = 1;
    public static final int STATUS_UNAVAILABLE = 2;
 
    private int status = STATUS_UNPICKED;
 
    public MyButton(Context context) {
        super(context);
    }
 
    public MyButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
 
    public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
 
    public void setStatus(int status) {
        this.status = status;
    }
 
    public int getStatus() {
        return status;
    }
}
Потом собираете все кнопки сколько вам нужно в List<MyButton> и отправляете его в метод, на подобии такого:
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
public void showRandomButton(List<MyButton> buttons, int buttonCount){
 
        List<MyButton> availableButtons = new ArrayList<>();
        int pickedCount = 0;
        for(MyButton button : buttons){
            int status = button.getStatus();
            if(status == MyButton.STATUS_UNPICKED){
                availableButtons.add(button);
                button.setVisibility(View.GONE);
            }else if(status == MyButton.STATUS_PICKED){
                pickedCount++;
            }else if(status == MyButton.STATUS_UNAVAILABLE){
                button.setVisibility(View.GONE);
            }
        }
 
        int countLeft = buttonCount - pickedCount;
 
        for(int i = 0; i < countLeft; i++){
            int randomIndex = new Random().nextInt(availableButtons.size());
            availableButtons.get(randomIndex).setVisibility(View.VISIBLE);
            availableButtons.remove(randomIndex);
        }
 
    }
Сам выбор случайных кнопок очень не оптимально я описал, но основное понятно должно быть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2015, 13:33     БД или Enum? Плюс выбрать рандомно
Еще ссылки по теме:

Не знаю что выбрать Android
Android Выбрать с формы TextView
Выбрать hasmap или sqlite Android
Android Выбрать архитектуру приложения с БД
Получение строки из R.string в коде enum Android

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

Или воспользуйтесь поиском по форуму:
Yulunga
76 / 69 / 16
Регистрация: 22.04.2013
Сообщений: 387
Завершенные тесты: 1
20.01.2015, 13:33  [ТС]     БД или Enum? Плюс выбрать рандомно #8
отлично просто. спасибо большое!!
Yandex
Объявления
20.01.2015, 13:33     БД или Enum? Плюс выбрать рандомно
Ответ Создать тему
Опции темы

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