Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > Какой можно применить аоглорим?


Автор: Vladimirys 13.2.2012, 23:14
Суть в следующем, нужно,  чтобы приложение, при вводе числа, выводило на экран документ, с этим номером (из ресурсов). И  кроме как через (if) ничего не могу придумать, много будет таких (if).  
Какие еще могут быть варианты??

Автор: azusdex 14.2.2012, 01:53
Если правильно понял вопрос, то почему же не через switch ?

Автор: Vladimirys 14.2.2012, 15:38
Так тоже самое и выйдет.. Думал переменную вот сюда (R.string...), не проходит.
А нужно вот что, к примеру, вводиться число 21,   и из ресурсов "извлекается" документ с таким же именем (только с "приставкой А" ибо чистые цифры тоже не принимаются в качестве имени..)
Вот и получается что если к примеру 100 документов, то и 100 операторов if да и switch, тоже.

Автор: azusdex 14.2.2012, 21:06
R.string..... это переменая int 
в чем проблема сделать массив int[] и оттуда уже вызвать array[21] ?

Автор: Vladimirys 14.2.2012, 22:28
Можно хотя бы пару строк как это будет выглядеть?  Не могу как то все в кучу собрать.

Приведу еще часть кода, как у меня  сейчас

Вводим число, и получаем в отработку.

Код

try {
                    Num = Integer.parseInt(Text1.getText().toString()); //
    
                } catch (NumberFormatException e) {
                    Num = 0;


После это сравниваем с имеющимся в ресурсах

Код

if (Num == 1) {
            
                    mText.setText(R.string.A1);
}

..........
i
Код

f (Num == 100) {
            
                    mText.setText(R.string.A100);
}





И так далее. Т.е сколько цифр столько и таких вот выражений. Меня это не радует.
И Хочется сделать это как то проще.   
Очень бы хотелось, непосредственно код, ну или четкий планsmile)

Автор: azusdex 14.2.2012, 22:45
код извени написать не могу, готовлюсь к экзамену  smile 

но я думаю примерно так:

Код

         mText.setText(array[num]);


array - это массив который ты создал зарание и запихнул туда все R.string.A1 , R.string.A2 ,..... .
num - это индекс массива и так же в твоем случае это число запроса.
единственное что проверь setText вроде string, если да то и создавай массив String.

Добавлено через 1 минуту и 42 секунды
а в массив тебе все таки прийдется записать ручками все твои R.string....

Автор: Oligarh 5.4.2012, 02:22
Ребят, я если честно не совсем понимаю, что вы пытаетесь сделать, но предполагаю, что вам надо из папки на карте памяти открыть какой-то документ. Если это так, то могу предложить свой способ решения проблемы:
Путь к папке с ресурсами мы знаем, извлекаем список всех файлов:
Код

private List<String> listFiles(String dirResource) {
    ArrayList<String> list = new ArrayList<String>();
    File file = new File(dirResource);
    String[] temp = file.list();
    for (int i = 0; i < temp.length; i++) {
        File f = new File(dirResource + "/" + temp[i]);
        if (f.isFile()) {
            String str = dirResource + "/" + temp[i];
            list.add(nameFile(str));
        } else {
            list.addAll(listFiles(dirResource + "/" + temp[i]));
        }
        return list;
    }

private String nameFile(String s) {
    int index = s.lastIndexOf("/");
    return index != -1 ? s.substring(index + 1) : s;
}


Затем пробегаемся по полученному листу и выбираем нужны нам файл для открытия:
Код

for (String str : listFiles(dirResource)) {
    if (str == сложению приставки "А" и String.valueOf(твое введенноt число)) {
        открываешь свой файл
    }
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)