2012-04-25 2 views
1

사용되는 코드입니다. 제가내부 어댑터의 add() 함수 ListActivity는 지원되지 않는 작업을 나타냅니다.

public class ViewPage extends ListActivity{ 

ListView lv; 
ListAdapter ld; 
int size=7; 
String filename[] = new String[size]; 
Cursor contactcursor; 
ArrayAdapter<String> arr_ad; 
int contact_column_index; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.mylist); 

    for(int i=0;i<size;i++) 
     filename[i]=new String(); 


    String[] proj = { ContactsContract.Contacts.DISPLAY_NAME }; 
    contactcursor = managedQuery(ContactsContract.Contacts.CONTENT_URI, proj, null, null, null); 
    contact_column_index = contactcursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME); 
    lv = (ListView)findViewById(android.R.id.list); 
    contactcursor.moveToFirst(); 
     for(int i=0;i<size;i++) 
     { 
      filename[i] = contactcursor.getString(contact_column_index); 
      Toast.makeText(ViewPage.this, filename[i] +" ok "+ contactcursor.getString(contact_column_index) , 1).show(); 
      if(!contactcursor.moveToNext()) 
       break; 
     } 
     arr_ad = new ArrayAdapter<String>(ViewPage.this, android.R.layout.simple_list_item_1, filename); 
     setListAdapter(arr_ad); 
     lv.setOnScrollListener(new EndlessScrollListener()); 
} 

public class EndlessScrollListener implements OnScrollListener { 

private int visibleThreshold = size; 
private int currentPage = 0; 
private int previousTotal = 0; 
private boolean loading = true; 

public EndlessScrollListener() 
{ 

} 

public EndlessScrollListener(int visibleThreshold) 
{ 
    this.visibleThreshold = visibleThreshold; 
} 

@Override 
public void onScroll(AbsListView view, int firstVisibleItem, 
     int visibleItemCount, int totalItemCount) { 
    // TODO Auto-generated method stub 
    Toast.makeText(ViewPage.this, "In" , 1).show(); 
    if (loading) 
    { 
     if (totalItemCount > previousTotal) 
     { 
      loading = false; 
      previousTotal = totalItemCount; 
      currentPage++; 
     } 
    } 
    if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) 
    { 


      for(int i=0;i<size;i++) 
      { 
       filename[i] = contactcursor.getString(contact_column_index); 
       Toast.makeText(ViewPage.this, filename[i] +" "+ contactcursor.getString(contact_column_index) , 1).show(); 
       arr_ad.add(filename[i]); 
       if(!contactcursor.moveToNext()) 
        break; 

      } 

      arr_ad.notifyDataSetChanged(); 
      //arr_ad = new ArrayAdapter<String>(ViewPage.this, android.R.layout.simple_list_item_1, filename); 


      //setListAdapter(arr_ad); 

      loading = true; 
      Toast.makeText(ViewPage.this,totalItemCount+" "+visibleItemCount+" "+firstVisibleItem+" "+visibleThreshold+" ", 1).show(); 
    } 
} 

@Override 
public void onScrollStateChanged(AbsListView view, int scrollState) { 
    // TODO Auto-generated method stub 

} 

} 
} 

그것은 arr_ad.add되는 라인 98에서 오류 나타낸다 ..리스트 처음에 한번 로딩하고 다음으로 스크롤에 데이터를로드 할 (이 파일 이름 [I]); 작업이 지원되지 않는다고 말합니다. 누구든지 제발 도와 줄 수 있어요! 고맙습니다.

답변

0

ArrayAdapter의 add 메소드를 사용하려면 List < String> 객체 (String [])를 생성자에 제공해야합니다.

관련 문제