使用されるコード。リストを最初に一度ロードしてから、後続のスクロールでデータをロードしたい。
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
}
}
}
98行目にエラーが表示されています。これはarr_ad.add(filename [i]);です。そして、その操作はサポートされていないと言います。誰か助けてくれませんか!よろしくお願いします。