Следующий оператор создаст массив String с размером приложения для 1-го измерения
appString = new String[app.size()][];
Но все значения для этого двухмерного массива будут заполнены нулем.
Когда appString[i][j]
обрабатывается во время выполнения, будет искать первое appString[i]
ведро и в этом appString [i] [j] будет искать.
Здесь appString[i]
само по себе равно null
и, следовательно, у вас есть NullPointerException
.