2014-08-29 2 views
0

배열 어댑터가 있습니다.이 arrayadapter에 항목을 추가 할 수 있지만 때로는이 어댑터의 항목을 업데이트해야합니다. 인터넷을 조사했는데 특정 항목을 업데이트 할 수 없습니다. 어댑터가 나는 이렇게했다 : user는 jsonobject.I이 항목의 위치를 ​​얻고있다이 코드에서arrayadapter의 항목 업데이트

Integer test=randomAdapter.getPosition(user); 
randomAdapter.remove(user); 
randomAdapter.insert(updated_user,test); 
randomAdapter.notifyDataSetChanged(); 

나는 그것을 제거하고 오래된 객체 position.This에 uptated 사용자 데이터를 추가하고 works.But 나는 것 같다 이 항목을 업데이트하기에 좋은 아이디어인지 모릅니다. 그래서 당신에게 묻습니다.

이것이 좋지 않다고 생각되면 어떻게해야합니까?

답변

1

ArrayAdapter은 배열에 대한 참조 또는 해당 배열이 사용하는 객체의 List을 유지 관리합니다. add(...), remove(...) 또는 insert(...)과 같은 메서드는 배열/목록에 직접 적용되며 스레드로부터 안전하도록 synchronized 문을 사용합니다.

당신의 접근 방식은 약간 길어 보일지 모르지만 다른 방법으로하는 것처럼 안전한 방법입니다. 물론 원래 배열 /리스트를 조작 할 수는 있지만 스레드 안전성이 필요한 경우에는 자신의 코드에 동기화를 추가해야합니다. 왜 바퀴를 다시 발명합니까?

당신이 ArrayAdapter에 대한 소스 코드를보고 싶은 경우는 here

+0

내가 문을 동기화 모르겠어요,하지만 내 방식이 안전한지,이 method.Thank 당신 –

+1

@TolgayToklar를 사용합니다 : Google에서 "Java 동기화"를 검색하십시오. 그것은 '잠그고 하나 이상의'Thread'가 동시에 같은 동작을 수행하는 것을 방지하는 동기화 된 메소드 나 문장을 생성하는 방법입니다. 코드가 안전하게 작동하고 문제가 발생하지 않습니다. – Squonk