Back to project page android-demos.
The source code is released under:
Apache License
If you think the Android project android-demos listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/** * Copyright 2013 Google Inc. All Rights Reserved. *// ww w.j av a 2 s .co m * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ package com.google.android.gms.drive.sample.demo; import android.os.Bundle; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.ListView; import com.google.android.gms.common.api.ResultCallback; import com.google.android.gms.drive.Drive; import com.google.android.gms.drive.DriveApi.MetadataBufferResult; import com.google.android.gms.drive.Metadata; import com.google.android.gms.drive.query.Query; import com.google.android.gms.drive.widget.DataBufferAdapter; /** * An activity illustrates how to list file results and infinitely * populate the results list view with data if there are more results. */ public class ListFilesActivity extends BaseDemoActivity { private ListView mListView; private DataBufferAdapter<Metadata> mResultsAdapter; private String mNextPageToken; private boolean mHasMore; @Override protected void onCreate(Bundle b) { super.onCreate(b); setContentView(R.layout.activity_listfiles); mHasMore = true; // initial request assumes there are files results. mListView = (ListView) findViewById(R.id.listViewResults); mResultsAdapter = new ResultsAdapter(this); mListView.setAdapter(mResultsAdapter); mListView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } /** * Handles onScroll to retrieve next pages of results * if there are more results items to display. */ @Override public void onScroll(AbsListView view, int first, int visible, int total) { if (mNextPageToken != null && first + visible + 5 < total) { retrieveNextPage(); } } }); } /** * Clears the result buffer to avoid memory leaks as soon * as the activity is no longer visible by the user. */ @Override protected void onStop() { super.onStop(); mResultsAdapter.clear(); } /** * Handles the Drive service connection initialization * and inits the first listing request. */ @Override public void onConnected(Bundle connectionHint) { super.onConnected(connectionHint); retrieveNextPage(); } /** * Retrieves results for the next page. For the first run, * it retrieves results for the first page. */ private void retrieveNextPage() { // if there are no more results to retrieve, // return silently. if (!mHasMore) { return; } // retrieve the results for the next page. Query query = new Query.Builder() .setPageToken(mNextPageToken) .build(); Drive.DriveApi.query(getGoogleApiClient(), query) .setResultCallback(metadataBufferCallback); } /** * Appends the retrieved results to the result buffer. */ private final ResultCallback<MetadataBufferResult> metadataBufferCallback = new ResultCallback<MetadataBufferResult>() { @Override public void onResult(MetadataBufferResult result) { if (!result.getStatus().isSuccess()) { showMessage("Problem while retrieving files"); return; } mResultsAdapter.append(result.getMetadataBuffer()); mNextPageToken = result.getMetadataBuffer().getNextPageToken(); mHasMore = mNextPageToken != null; } }; }