2013-10-16 3 views
0

fragment 안에 ListView을 사용하고 있지만 ListView를 업데이트하는 데 문제가 있습니다. 이 시점에서ArrayAdapter를 사용하여 ListView 업데이트

items= new String[]{"item 1", "item 2", "item 3", "item 4", "item 5", "item 6"}; 

모든 일을 :

내가 내 getItems()는 문자열 배열의 게터입니다 ListView

adapter = new ArrayAdapter<String>(getActivity(), 
      android.R.layout.simple_list_item_1, 
      ((TabNavigation)this.getActivity()).getItems()); 
    setListAdapter(adapter); 

라는 항목에 어댑터를 설정하기 위해 사용하는 코드입니다 좋은 : 나는 나의 명부에서 6 개의 품목을 볼 수있다. 나는이 방법으로 내 배열 업데이트하려고하면

이제 :

items[0]="injected item"; 

내가 모든 작품 finem 내 어댑터를 통해 notifyDataSetChanged() 전화보다는를 제대로 내 목록 변화의 항목은, 첫 번째 요소로 보여주는 때문에 문자열 대신 항목 1. 의 항목을 주입하지만, 해당 명령의 나는 다음과 같은 사용하는 경우 :

items= new String[]{"injected item", "item 2", "item 3", "item 4", "item 5", "item 6"}; 

나는 내 어댑터를 통해 notifyDataSetChanged() 전화보다, 목록이 업데이트되지 않습니다.

저는 이것이 참조 용 값의 통과에 달려 있다고 생각합니다. 어댑터가 어댑터를 처음 설정할 때 전달 된 배열 복사본을 참조하는 것처럼 보입니다. 사실 내가 사용하는 경우 :

temp= new String[]{"injected item", "item 2", "item 3", "item 4", "item 5", "item 6"};  
System.arraycopy(temp, 0, items, 0, temp.length); 

목록보기가 올바르게 업데이트입니다. 하지만 원래 배열의 길이와 정확히 같은 길이를 사용해야합니다.

그럼 실제 질문은 목록에있는 항목의 개수를 변경해야한다면 ListView을 어떻게 업데이트 할 수 있습니까?

답변

1

ListArray too.adapter를 사용하면 해당 항목을 표시 할 수있는 목록 또는 배열 객체를 얻을 수 있습니다. 배열이나 목록을 설정할 수 있으며 변경할 수있는 항목이 필요할 때마다 배열을 변경할 수 있지만 배열에는 일정한 길이가 있습니다. 어레이의 항목 수를 변경하려면 adapter.add("string");을 사용해야합니다. 어댑터에 패스 배열 대신 listarray를 사용할 수 있으며 변경 또는 추가도 쉽습니다. 이 코드가 도움이됩니다

final ArrayList<String> list = new ArrayList<String>(); 
for (int i = 0; i < values.length; ++i) { 
    list.add(values[i]); 
} 
final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list); 
listview.setAdapter(adapter); 
+0

맞습니다! 고마워. @linux – GVillani82

+0

그냥 questio @ linux. 왜 List를 생성자의 마지막 매개 변수로 전달할 것인가? 다음과 같은 경고 메시지가 나타납니다.'형의 안전성 : ArrayList 형의 표현식에는 List 에 부합하는 검사되지 않은 변환이 필요합니까 ?? – GVillani82

+0

ArrayList가 List.sorry를 확장했기 때문에 생각하지만 확실하지 않습니다. – zohreh

관련 문제