package com.example.weather; import java.util.List; import java.util.Map; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.TextView; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.example.absdemo.R; import com.example.util.DB; /** * @author Mark * */ public class AddressActivity extends SherlockActivity { private TextView provinceTV; private TextView cityTV; private ListView listView; private SimpleAdapter adapter; private List<Map<String, String>> list; private int state = 0; private String city = ""; private String id = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.address); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setLogo(R.drawable.icon); getSupportActionBar().setTitle("City"); getSupportActionBar().setBackgroundDrawable( this.getResources().getDrawable(R.drawable.action_bar_bg)); state = 0; provinceTV = (TextView) findViewById(R.id.provinceText); cityTV = (TextView) findViewById(R.id.cityText); listView = (ListView) findViewById(R.id.addresslist); list = DB.getProvince(); String[] from = new String[] { "address" }; int[] to = new int[] { android.R.id.text1 }; adapter = new SimpleAdapter(this, list, android.R.layout.simple_list_item_1, from, to); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { String temp = list.get(arg2).get("address"); switch (state) { case 0: getCity(temp); provinceTV.setText(temp + ">>"); city = temp; state = 1; break; case 1: getCountry(temp); cityTV.setText(temp + ">>"); state = 2; break; case 2: getId(temp); Intent intent = new Intent(); intent.putExtra("id", id); intent.putExtra("address", temp); setResult(1, intent); finish(); break; default: break; } } }); } @Override public void finish() { super.finish(); overridePendingTransition(R.anim.push_down_in, R.anim.push_down_out); } private void getProvince() { list.clear(); list.addAll(DB.getProvince()); adapter.notifyDataSetChanged(); } private void getCity(String province) { list.clear(); list.addAll(DB.getCity(province)); adapter.notifyDataSetChanged(); } private void getCountry(String city) { list.clear(); list.addAll(DB.getCountry(city)); adapter.notifyDataSetChanged(); } private void getId(String country) { id = DB.getAddressId(country); } @Override public void onBackPressed() { switch (state) { case 0: finish(); break; case 1: getProvince(); provinceTV.setText(""); cityTV.setText(""); state = 0; break; case 2: getCity(city); provinceTV.setText(city + ">>"); cityTV.setText(""); state = 1; break; default: break; } // super.onBackPressed(); } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 1, 0, "delete") .setIcon(R.drawable.checkbox_checked) .setShowAsAction( MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); break; case 1: finish(); break; default: break; } return super.onOptionsItemSelected(item); } }