Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Elkatib
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 143
1

Массивы и ЛистВью

30.05.2017, 10:13. Просмотров 760. Ответов 6
Метки нет (Все метки)

Люди добрые подскажите, плиз, как избавиться от ошибки.
Имеется файл, в котором в следующем виде записаны данные:
Витя&Коля&Саша&Паша
Даша&Ира&Катя&Маша

Необходимо прочитать данные из файла, и поместить в листфью первые имена из этих строк.

Вот часть кода. Ошибок Студио не показывает, но эмулятор падает. Пошагово запустил эмулятор - все строчки проходят без ошибок, а ошибка вылазит где-то внутри системных классов, где я вообще не разбираюсь, учитывая, что не профессионал в этом деле.

Буду благодарен за помощь!!! Спасибо заранее!!!!!!!

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
public class dela extends AppCompatActivity {
    final String LOG_TAG = "myLogs";
    int i = 0;
    final String FILENAME = "file";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dela);
 
 
        String [] massivImena;  // Объявляем массив с Именами
        String [] ArrayName = new String[10]; // Объявляем второй массив с именами
 
 
        //ЧИТАЕМ ФАЙЛ
        try {
            // открываем поток для чтения
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    openFileInput(FILENAME)));
            String str = "";
            // читаем содержимое
            while ((str = br.readLine()) != null) {
                Log.d(LOG_TAG, str);
                massivImena = str.split("&"); // Делим строку и помещаем каждое отдельное имя в соответствующий размер массива
                ArrayName[i] = massivImena[0]; // Помещаем первой имя из первого массива во второй массив
                i = i + 1; //плюсуем i, чтобы первое имя во второй строке первого массива было помещено во второй размер второго массива
            }
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
 
 
 
//ВЫВОДИМ ДАННЫЕ НА ЭКРАН
// получаем экземпляр элемента ListView
        ListView listView = (ListView)findViewById(R.id.listView);
// используем адаптер данных
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
                android.R.layout.simple_list_item_1, ArrayName);
        listView.setAdapter(adapter);
Добавлено через 9 часов 41 минуту
P.S. Заработало, когда изменил размер массива ArrayName с 10 до 2 (количество строк в файле)? Но почему? Подскажите плиз. Проблема в том я не смогу всегда заранее знать сколько строк будет в файле???
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2017, 10:13
Ответы с готовыми решениями:

Интересный ЛистВью
Есть такая задачка. Где-то в интерфейсе расположен ListView из 100 элементов,...

Android MySQL в листвью
Добрый день. Рылся по инету но не нашёл рабочего аналога. Те что скачал (2шт)...

При скролинге листвью, картинки пропадают
День добрый. Использую свой кастом адаптер для листвью(см. приложение). При...

Сортировка листвью
Привет. Как отсортировать в листвью колонку по алфавиту?

заполнить листвью
есть такой ListView (см. вложение) необходимо из бд (MySQL) заполнить Фамилия...

6
ExFau$t
676 / 567 / 131
Регистрация: 08.05.2012
Сообщений: 2,815
30.05.2017, 10:18 2
Не вникал в код. Массивы уже никто не использует, смотри в сторону коллекций.
0
Elkatib
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 143
30.05.2017, 10:26  [ТС] 3
ExFau$t, я понимаю, но мне бы с массивом сначала разобраться. Как заставить его правильно работать в этом коде? Если размер массива ArrayName не установить изначально (как massivName), то вылазит ошибка "не инециализирование массива" в этой части кода:

ArrayName[i] = massivImena[0];
0
ExFau$t
676 / 567 / 131
Регистрация: 08.05.2012
Сообщений: 2,815
30.05.2017, 10:34 4
Почитай теорию про массивы, чтобы знать почему и как. Здесь я бы использовал ArrayList и не парился, есть в файле что-то или нет.
0
Elkatib
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 143
30.05.2017, 10:36  [ТС] 5
ExFau$t, вроде прочитал, но не могу понять как в моем случае использовать list.get
0
ExFau$t
676 / 567 / 131
Регистрация: 08.05.2012
Сообщений: 2,815
30.05.2017, 10:41 6
Лучший ответ Сообщение было отмечено Elkatib как решение

Решение

Зачем тебе list.get? Заполняешь лист так же, как массив и его суёшь в адаптер, всё абсолютно то же самое, только в 150 раз проще.
1
Elkatib
1 / 1 / 0
Регистрация: 08.01.2016
Сообщений: 143
30.05.2017, 10:44  [ТС] 7
ExFau$t, Спасибо большое. Заработало. Я не знал про список массивов. Теперь почитал узнал. Еще раз огромное спасибо. Действительно все намного проще.
0
30.05.2017, 10:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2017, 10:44

Чекбоксы в листвью - как положить?
Есть одна проблема... Надо в листвью положить чекбоксы (должно быть 2 колонки...

Шрифты, табконтролы, листвью и вывод текста
Я создаю окно, в окне табконтрол, внутри каждого таба которого листвью. При...

Даны массивы A(8), F(8),Q(8). Сформировать массивы С(8), каждый элемент которого вычисляется по формуле
uses crt; type mas=array of integer; var A,F,Q,C:mas; i,s:integer; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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