2011-01-29 4 views
1

내가하고있는 일은 0 행으로 ListView를 시작하고 인터넷에서 목록을 다운로드 한 다음 다운로드 한 내용으로 ListView를 채 웁니다. 충분히 쉬운 것처럼 보이지만 어레이가 문제가되는 것으로 입증되었습니다. 무슨 일ListView with Array 문제

은 내가 더 행으로 채우는 그래서 그것을

static String[] CONTENTS = new String[]{}; 

를 원하는 것 같다 유일한 방법 목록보기 내 배열을 선언하고있어 것입니다. 스레드를 통해 내용을 다운로드 한 다음, 다운로드 한 배열로 채우기 위해 이동합니다. 문제는 배열을 채우고 싶지 않다는 것입니다. 하나의 빈 문자열을 사용하여 배열을 초기화하면 정확히 하나의 행으로 채울 수 있습니다 (하나 이상의 객체가있는 배열을 제공하면 아무 것도하지 않습니다). ListView에서 데이터를 가져 오는 배열을 어떻게 확장 할 수 있습니까? 그래서 선언 한 객체의 개수 이상으로 채울 수 있습니까?

내가 올 수 있었던 가장 가까운

배열을 확장하여 그것을 다운로드 개체의 수를 제공하기 위해 코드

private String[] expand(String[] array, int size) { 
    String[] temp = new String[size]; 
    System.arraycopy(array, 0, temp, 0, array.length); 
    for(int j = array.length; j < size; j++) 
     temp[j] = ""; 
    return temp; 
} 

을 통해서였다,하지만 여전히 작동하지 않는 것 같습니다.

미리 감사드립니다. 내가 배열에 확장 할 수 있습니다 방법

답변

0

배열을 사용하지 마십시오. List의 구현을 사용하십시오. (ArrayList가 작업을 수행합니다). 컬렉션은 구식 배열보다 월등합니다.

//List 
list = new ArrayList(); 
//BaseAdapter 
adapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_list_item_1, list); 

//ListView 
listView = (ListView) findViewByID(R.id.listview); 
listView.setAdapter(adapter); 

그리고 당신은 추가 할 때 list에서/당신이

adapter.notifyDataSetChanged(); 
를 호출해야합니다에/요소를 제거
0

...

나는 당신이 ArrayAdapter를 사용하는 가정합니다. 고정 크기 배열을 사용하는 대신 인수를 사용하는 ArrayAdapter 생성자 중 하나를 사용하여 동적으로 크기를 재조정 할 수있는 ArrayList을 사용하여 다시 배열하십시오.