package com.chinaece.gaia.gui;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import com.chinaece.gaia.R;
import com.chinaece.gaia.db.DataStorage;
import com.chinaece.gaia.http.OAHttpApi;
import com.chinaece.gaia.types.ContactType;
public class ContactsActivity extends Activity {
private Collection<ContactType> contactlist;
protected List<Map<String, String>> list;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contacts);
final EditText edittext = (EditText)findViewById(R.id.editText1);
Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
String token = DataStorage.properties.getProperty("token");
URL formatUrl = new URL(DataStorage.properties.getProperty("url"));
JSONObject search = new JSONObject();
try {
search.put("search", URLEncoder.encode(edittext.getText().toString(),"UTF-8"));
} catch (JSONException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ApiTask task = new ApiTask();
task.execute(formatUrl.toString(),token.toString(),search.toString());
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
});
}
class ApiTask extends AsyncTask<String, Integer, Collection<ContactType>> {
private ProgressDialog dialog;
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(ContactsActivity.this, "请稍等...", "正在打开...");
}
@Override
protected Collection<ContactType> doInBackground(String... params) {
OAHttpApi OaApi = new OAHttpApi(params[0]);
Collection<ContactType> contactlist = OaApi.getContact(params[1], params[2]);
return contactlist;
}
@Override
protected void onPostExecute(Collection<ContactType> contactlist) {
if(contactlist!=null){
ContactsActivity.this.contactlist = contactlist;
final List<Map<String, String>> list = new ArrayList<Map<String, String>>();
for (ContactType con : contactlist) {
Map<String, String> map = new HashMap<String, String>();
map.put("name", con.getName());
map.put("telephone", con.getTelephone());
list.add(map);
}
ContactsActivity.this.list = list;
ListView listview = (ListView) findViewById(R.id.listView1);
ContactsAdapter adapter = new ContactsAdapter(getApplicationContext(), list);
listview.setAdapter(adapter);
dialog.dismiss();
listview.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
ContactType aContact = ((ArrayList<ContactType>) ContactsActivity.this.contactlist).get(arg2);
Bundle bundle = new Bundle();
bundle.putString("name", aContact.getName());
bundle.putString("telephone", aContact.getTelephone());
bundle.putString("email", aContact.getEmail());
Intent intent = new Intent(ContactsActivity.this,
ContactActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
else{
dialog.dismiss();
Toast.makeText(getApplicationContext(), "数据错误请稍候再试...", Toast.LENGTH_LONG).show();
}
}
}
}