Вот мой код для просмотра всех папок в устройстве.Проблема с адаптером ListView в android
private File file;
private List<String> directoriesList;
private ListView listView ;
private ArrayAdapter<String> adapter;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.folder_browse_screen);
listView = (ListView) findViewById(R.id.foldersListView);
directoriesList = new ArrayList<String>();
file = new File("/mnt");
File list[] = file.listFiles();
if (list != null && list.length >= 1) {
for (int i = 0; i < list.length; i++) {
File f = list[i];
if (!f.isHidden() && f.canRead() && f.isDirectory()) {
directoriesList.add(f.getName());
}
}
adapter = new ArrayAdapter<String>(this, R.layout.list_row, R.id.folder_name, directoriesList);
listView.setAdapter(adapter);
}
OnItemClick:
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
try {
File temp_file = new File(file, directoriesList.get(position));
if (!temp_file.isHidden() && temp_file.canRead() && temp_file.isDirectory()) {
file = new File(file, directoriesList.get(position));
File list[] = file.listFiles();
directoriesList.clear();
if (list != null && list.length >= 1) {
for (int i = 0; i < list.length; i++) {
File f = list[i];
if (!f.isHidden() && f.canRead() && f.isDirectory()) {
directoriesList.add(f.getName());
}
}
adapter.notifyDataSetChanged();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Исключение: java.lang.IllegalStateException: Содержание адаптера изменилось, но ListView не получил уведомления. Убедитесь, что содержимое адаптера не изменено из фонового потока, но только из потока пользовательского интерфейса. [в ListView (2131034114, класс android.widget.ListView) с адаптером (класс android.widget.ArrayAdapter)]
Где я использую потоки? Почему это принудительное закрытие при нажатии любой пустой папки? Пожалуйста, помогите мне.
Блестящий. Вы решили мою проблему. Большое спасибо. – Santhosh
Не мог бы проверить мой код, как если бы не этот ответ. Желаю, чтобы я мог +1 его 100 раз! – Sufian