Что бы это ни стоило, на KitKat + кажется, что adapter.notifyDataSetChanged()
достаточно, чтобы вызвать появление новых представлений, при условии, что вы setOffscreenPageLimit
достаточно высоко. Я могу получить желаемое поведение, выполнив viewPager.setOffscreenPageLimit(2)
.
char *seq=(char *)malloc((strlen(first)+1)*sizeof(char));
Вы выделяете память для строки размером только "первая".
strcat(strcpy(seq,first),second);
А затем вы пытаетесь уместить в ней и первую, и вторую строку. Это никогда не сработает. strcat
не создает дополнительной памяти, вам необходимо включить ее в malloc
.
Нет необходимости приводить результат malloc в чистый C.
Также нет необходимости делать sizeof (char)
, так как это гарантированно будет 1. Некоторым нравится, чтобы он был там в любом случае, чтобы указать тип в случае его изменения, некоторые считают это беспорядком.
Вы выделяете достаточно места только для первого в последовательности
seq имеет длину только (strlen (first) +1) * sizeof (char), этого недостаточно для хранения объединенной строки first + second.
Я видел, что строка:
strcat (strcpy (seq, first), second);
не неправильно оформлена. Причина в том, что вы выполняете конкатенацию строк, в которой вы не указываете правильный источник. Он будет работать нормально, если вы разделите приведенный выше синтаксис на 2 строки.
strcpy (seq, first); strcat (seq, second);
Это потому, что когда вы выполняете копирование строки, она копирует строку из «first» в «seq». Теперь, что касается конкатенации строк, поскольку он не смог найти правильный источник [помните, что вы специально не упомянули, что источником является "seq"], это дает недопустимую проблему с утечкой памяти при записи.
Надеюсь, это проясняет ваш вопрос. Вернитесь, если потребуется дополнительная информация для того же.