2013-08-19 4 views
0

나는 내부 탭 레이아웃 내부의 listView를 가지고 있습니다. 항목을 길게 누르면 항목의 이름을 바꿀 수있는 옵션이 나타납니다. 항목의 이름이 변경되면 활동이 다시 시작될 때까지 변경 사항을 볼 수 없습니다.목록보기 또는 활동 업데이트?

단순히 새로운 의도를 작성하고 활동을 다시 열어서 문제를 풀려고했지만 그 활동이 tablayout 안에 있으므로 작동하지 않습니다. 또한 재 개방 tabLayout 활동을 시도했지만 내가 그럼 내가 updateListView을 만들어 그것을 해결하려고 2.

() 메소드 탭 내에서 목록보기를 새로 고치려고하면서 다음 자동으로 탭 1로 이동 :

public void updateListView(){ 
    listAdapter.clear(); 
    listAdapter.addAll(recordedFilesArray); 
    listAdapter.notifyDataSetChanged(); 
} 

하지만 작동하지 않습니다. 이 메서드를 사용하면 listView가 완전히 지워지고 결과를 보려면 작업을 다시 시작해야합니다.

그래서 누구나 활동을 다시 시작하지 않고도 listView 변경 사항을 볼 수 있습니까? 그건 그렇고, 도움이된다면, 나는 ListView (ArrayList)를 텍스트 파일에서 읽고있다. 만 listAdapter

+0

이 참조 : http://stackoverflow.com/questions/5991968/how-to-force-an-entire-layout-view-refresh – roky

답변

0

문제점을 발견했습니다. 활동이 재시작 될 때까지 ArrayList는 변경되지 않았습니다. ArrayList의 요소를 변경하려면 arrayList.set()을 호출해야했습니다. 이제는 제대로 작동합니다.

내 코드 :

recordedFilesArray.set(toDelete, input.getText().toString()); //toDelete is arg2 variable (onLongItemClickListener) 
listAdapter.notifyDataSetChanged(); 
0

봅니다 별도의 어댑터 클래스를 만들고이를 관리 할 수있는 그의 getView() 함수를 구현할 수 있습니다. 귀하의 활동은 어레이 목록을 어댑터로 전달합니다. 어댑터의 getView()는 목록의 내용을 표시합니다.

목록이 수정되면 어댑터를 다시 초기화해야합니다. 그렇게하면 getView()는 항상 업데이트 된 데이터를 화면에 표시합니다.

+0

이미 시도를하지 않습니다 work – Guy

0

을 삭제하지 않고 notifyDataSetChanged()를 사용

+0

답장을 보내 주셔서 감사합니다.하지만 안드로이드 프로그래밍에 익숙하지 않으므로이 설명은 나에게 매우 혼란 스럽습니다. 코멘트가있는 작은 코드 예제를 줄 수 있습니까? – Guy

0

항목의 이름을 바꾸려면 ArrayList의 항목 개체를 으로 변경 한 다음 adapter.notifyDataSetChanged()을 호출하면됩니다.

+0

그게 정확히 내가하려고 노력했지만, 작동하지 않습니다. – Guy