package org.restlet.example.book.restlet.ch09.android;
import org.restlet.Client;
import org.restlet.data.Protocol;
import org.restlet.engine.Engine;
import org.restlet.example.book.restlet.ch09.common.MailsRepresentation;
import org.restlet.example.book.restlet.ch09.common.MailsResource;
import org.restlet.ext.net.HttpClientHelper;
import org.restlet.ext.jackson.JacksonConverter;
import org.restlet.resource.ClientResource;
import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
/**
* Android activity that retrieves the list of email from the GAE backend.
*
* @author Jerome Louvel
*/
public class MobileMailClientMainActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mobile_mail_client_main);
ListView emailList = getListView();
emailList.setTextFilterEnabled(true);
// Set-up the Restlet Engine
Engine.getInstance().getRegisteredClients().clear();
Engine.getInstance().getRegisteredClients()
.add(new HttpClientHelper(new Client(Protocol.HTTP)));
Engine.getInstance().getRegisteredConverters()
.add(new JacksonConverter());
// Retrieve the list of mails from the remote web API
AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
ClientResource clientResource = new ClientResource(
"http://reia-ch09.appspot.com/accounts/chunkylover53/mails/");
MailsResource mailsResource = clientResource
.wrap(MailsResource.class);
MailsRepresentation emails = mailsResource.retrieve();
final String[] subjects = new String[emails.getEmails().size()];
for (int i = 0; i < emails.getEmails().size(); i++) {
System.out.println(emails.getEmails().get(i));
subjects[i] = emails.getEmails().get(i).getSubject();
}
runOnUiThread(new Runnable() {
public void run() {
setListAdapter(new ArrayAdapter<String>(
MobileMailClientMainActivity.this,
R.layout.activity_mobile_mail_client_main,
R.id.list_item, subjects));
}
});
return null;
}
};
task.execute(null, null, null);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater()
.inflate(R.menu.activity_mobile_mail_client_main, menu);
return true;
}
}