package com.apigee.sample.books; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import com.apigee.sdk.ApigeeClient; import com.apigee.sdk.data.client.ApigeeDataClient; import com.apigee.sdk.data.client.callbacks.ApiResponseCallback; import com.apigee.sdk.data.client.entities.Entity; import com.apigee.sdk.data.client.response.ApiResponse; import java.util.ArrayList; import java.util.List; public class BooksListViewActivity extends Activity { private static final String ORGNAME = "rwalsh"; // <-- Put your username here!!! private static final String APPNAME = "sandbox"; private BooksApplication bookApp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_books_list_view); bookApp = (BooksApplication) getApplication(); if( bookApp.getApigeeClient() == null ) { ApigeeClient apigeeClient = new ApigeeClient(ORGNAME,APPNAME,this.getBaseContext()); bookApp.setApigeeClient(apigeeClient); } getBooks(); } @Override protected void onResume() { super.onResume(); getBooks(); } public void getBooks() { final ArrayList<String> titles = new ArrayList<String>(); final BooksArrayAdapter adapter = new BooksArrayAdapter(this, android.R.layout.simple_list_item_1, titles); adapter.setNotifyOnChange(true); final ListView listView = (ListView) findViewById(R.id.listview); listView.setAdapter(adapter); ApigeeDataClient client = bookApp.getDataClient(); if (client != null) { client.getEntitiesAsync("books", "select *", new ApiResponseCallback(){ @Override public void onException(Exception ex) { Log.i("Error", ex.getMessage()); } @Override public void onResponse(ApiResponse response) { if (response != null) { List<Entity> books = response.getEntities(); for (int j = 0; j < books.size(); j++) { Entity book = books.get(j); String bookTitle = book.getStringProperty("title"); adapter.add(bookTitle); } adapter.notifyDataSetChanged(); } else { adapter.add("Error: " + BooksApplication.apigeeNotInitializedLogError); adapter.notifyDataSetChanged(); apigeeInitializationError(); } } }); } else { adapter.add("Error: " + BooksApplication.apigeeNotInitializedLogError); adapter.notifyDataSetChanged(); apigeeInitializationError(); } } public void apigeeInitializationError() { Log.d("Books",BooksApplication.apigeeNotInitializedLogError); Context context = getApplicationContext(); CharSequence text = "Apigee client is not initialized"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.action_add_book: openBookForm(); return true; default: return false; } } public void openBookForm(){ Intent intent = new Intent(this, NewBookActivity.class); this.startActivity(intent); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.books_list_view, menu); return true; } private class BooksArrayAdapter extends ArrayAdapter<String> { public BooksArrayAdapter(Context context, int textViewResourceId, List<String> objects) { super(context, textViewResourceId, objects); } } }