이름이 포함 된 목록을 만들려고합니다. 이 목록은 수정 가능해야합니다 (추가, 삭제, 정렬 등). 그러나 ArrayAdapter의 항목을 변경하려고 할 때마다 프로그램이 java.lang.UnsupportedOperationException
오류 와 함께 충돌했습니다 . 내 코드는 다음과 같습니다.
ListView panel = (ListView) findViewById(R.id.panel);
String[] array = {"a","b","c","d","e","f","g"};
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, array);
adapter.setNotifyOnChange(true);
panel.setAdapter(adapter);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert("h", 7);
}
});
삽입, 제거 및 지우기 방법을 시도했지만 아무도 작동하지 않았습니다. 누군가 내가 뭘 잘못했는지 말해 줄까요?
답변
나는 그것을 시도했다, 나 자신 … 그것이 작동하지 않는다는 것을 발견했다. 그래서 ArrayAdapter 의 소스 코드를 확인 하고 문제를 발견했습니다. ArrayAdapter는 배열에 의해 초기화 될 때 배열을 수정할 수없는 AbstractList (List)로 변환합니다.
솔루션ArrayList<String>
대신 ArrayAdapter를 초기화하는 동안 배열을
사용하십시오 .
String[] array = {"a","b","c","d","e","f","g"};
ArrayList<String> lst = new ArrayList<String>(Arrays.asList(array));
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, lst);
건배!