package com.chinaece.gaia.gui; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.ListActivity; import android.app.ProgressDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; 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.BossTrackingType; public class BossTrackingsActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pendinglist); refreshData(); } @Override protected void onNewIntent(Intent intent) { refreshData(); } private void refreshData(){ try { URL formatUrl = new URL(DataStorage.properties.getProperty("url")); ApiTask task = new ApiTask(); task.execute(formatUrl.toString()); } catch (MalformedURLException e) { } } class ApiTask extends AsyncTask<String, Integer, Collection<BossTrackingType>> { private ProgressDialog dialog; @Override protected void onPreExecute() { dialog = ProgressDialog.show(BossTrackingsActivity.this, "请稍等...", "正在初始化..."); } @Override protected Collection<BossTrackingType> doInBackground(String... params) { OAHttpApi OaApi = new OAHttpApi(params[0]); Collection<BossTrackingType> bosstracklist = OaApi.getBossTrack(); return bosstracklist; } @Override protected void onPostExecute(final Collection<BossTrackingType> bosstracklist) { if(bosstracklist!=null){ if(bosstracklist!=null && bosstracklist.size()>0) { final List<Map<String, String>> list = new ArrayList<Map<String, String>>(); ArrayList<BossTrackingType> arr = (ArrayList<BossTrackingType>)bosstracklist; final ArrayList<BossTrackingType> newlist = new ArrayList<BossTrackingType>(); for(int i = arr.size();i>0;i--){ newlist.add((BossTrackingType) arr.get(i-1)); Map<String, String> map = new HashMap<String, String>(); map.put("title",((BossTrackingType) arr.get(i-1)).getItem()); map.put("info",((BossTrackingType) arr.get(i-1)).getDepart()+" "+((BossTrackingType) arr.get(i-1)).getNum()); list.add(map); } SimpleAdapter adapter = new SimpleAdapter(BossTrackingsActivity.this, list, R.layout.tracks, new String[] { "title", "info",}, new int[] { R.id.title, R.id.info }); ListView listview = (ListView) findViewById(android.R.id.list); listview.setAdapter(adapter); dialog.dismiss(); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { BossTrackingType abossTrack = ((ArrayList<BossTrackingType>) newlist ) .get(arg2); Bundle bundle = new Bundle(); bundle.putSerializable("bosstrack", abossTrack); Intent intent = new Intent(BossTrackingsActivity.this, TrackActivity.class); intent.putExtras(bundle); startActivity(intent); } }); } else{ dialog.dismiss(); Toast.makeText(getApplicationContext(), "沒有跟踪事项!", Toast.LENGTH_LONG).show(); } } else { dialog.dismiss(); Toast.makeText(getApplicationContext(), "数据错误请稍候再试...", Toast.LENGTH_LONG).show(); } } } public boolean onCreateOptionsMenu(Menu menu) { menu.add(Menu.NONE, Menu.FIRST + 1, 1, "刷新").setIcon( android.R.drawable.ic_menu_rotate); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case Menu.FIRST + 1: refreshData(); break; } return false; } }