다른 Thread
을 사용하여 어댑터의 List
을 지우고 IndexOutOfBoundsException
을 얻는 경우가 있습니다.ListView 및 스레드 안전을위한 사용자 지정 어댑터
내가 문제가 ListView
를 작성 사용자 정의 어댑터의 과정의 중간에 어딘가가 있다고 가정, 두 번째 스레드 어딘가에 경계의 부족을 일으키는 원인이되는 list.size()
0을 반환하는 원인이 list.clear()
를 호출합니다.
이 스레드 안전성을 동기화 된 상태로 만들려면 어떻게해야합니까 (문제를 해결할 수있는 경우)?
//onCreate
fillList(list); // fills the list
new AsyncTaskSubclass().execute(); // clear the list on a different Thread
편집 : 나는 문제가 AsyncTask
어댑터가 사용하는 List
을 변경할 수있는 방법이의 ArrayAdapter
서브 클래스가 사용하는 목록을 삭제된다는 사실에 온다 생각? 좀 더 코드를 가지고
List<Item> list = Collections.synchronizedList(new ArrayList<Item>());
서버에서 새 데이터를 가져 오는 중입니다. 따라서 목록이 지워지고 별도의 스레드에서 다시 채워집니다. 이 솔루션이 해당 상황에 적용됩니까? –
아니요, 여전히 예외가 발생합니다. –