Я не думаю, что я действительно понимаю вопрос ... Однако вы получаете исключение нулевого указателя.
Это выглядит неправильно для меня:
public Object getItem(int position)
{
return null;
}
Однако,это то же самое, что и в этом примере , поэтому я уверен, что все в порядке.
Если у вас происходит сбой приложения в этой строке (о чем вы сказали):
imagegrid.setAdapter(new ImAdapterh(getApplicationContext()));
Тогда кажется, что либо в этой строке должен быть ноль, либо побочный эффект одного из вызовов вызывает исключение.
Итак, очевидные возможности:
imagegrid
является нулевым в этой точке?Если это так, вызов метода для него вызовет нулевое исключение.Предположительно, вы где-то создали и инициализировали его, но не включили этот код. - Возвращает ли
getApplicationContext
ненулевое значение?Он назначен в конструкторе для ImAdapterh
, но не используется конструктором, но его стоит проверить.
Ваш ImAdapterh
содержит следующие строки:
File dir=new File(Environment.getExternalStorageDirectory(),"/Pictures/");
int count=dir.list().length;
String[] fileNames = dir.list();
ThisМне кажется, что это может привести к ошибкам, хотя это может быть стилистически ... Я бы попробовал изменить его на:
File dir;
int count;
String[] fileNames;
Затем создайте объекты в вашем конструкторе для класса.Это также может дать вам лучшую трассировку стека, если одна из этих строк вызывает проблему (и позволяет вам установить точку останова в коде конструктора).
Я бы также установил точку останова в начале вашегоgetView
, чтобы узнать, вызывается ли он в результате установки адаптера для imagegrid
.