城市
import java.util.ArrayList;
import java.util.List;
import com.baidu.location.Address;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnItemClickListener{
public LocationClient mLocationClient = null;
public BDLocationListener myListener = new MyLocationListener();
String[] letter={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
String[] cityLetter={"C","B","H","G","W","C","S","S","C","W","H","Z","C","D","N","L","Q","S","S"
,"L","N","H","X","H","S","Z","G","N","J","T","S","X","A"};
String[] cityName={"長沙","北京","杭州","廣州","武漢","重慶","上海","深圳","長春","烏魯木齊","哈爾濱","鄭州","成都","大連","南昌","蘭州","齊齊哈爾","汕頭","蘇州"
,"拉薩","南京","呼和浩特","廈門","合肥","瀋陽","張家界","貴州","寧夏","濟南","天津","石家莊","西安","澳門"};
List<String> letterToCity=new ArrayList<String>();
int count;
private ListView lv;
private ListView lv1;
private TextView tv;
private Button location_place;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
location_place=(Button)findViewById(R.id.location_place);
tv = (TextView)findViewById(R.id.tv);
// LocationClient類是定位SDK的核心類
mLocationClient = new LocationClient(getApplicationContext()); // 聲明LocationClient類
mLocationClient.registerLocationListener(myListener); // 註冊監聽函數
location_place.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initLocation();
}
});
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
}
});
String str="";
for(int i=0;i<letter.length;i++){
str=letter[i];
boolean isAddLetter=false;
for(int j=0;j<cityLetter.length;j++){
if(str.equals(cityLetter[j])){
if(!isAddLetter){
letterToCity.add(str);
isAddLetter=true;
}
letterToCity.add(cityName[j]);
}
}
}
lv=(ListView)findViewById(R.id.listView1);
lv.setAdapter(new MyAdapter());
lv.setOnItemClickListener(this);
lv1=(ListView)findViewById(R.id.listView2);
lv1.setAdapter(new MyAdapter1());
lv1.setOnItemClickListener(this);
}
//定位
protected void initLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 可選,默認高精度,設置定位模式,高精度,低功耗,僅設備
option.setCoorType("bd09ll");// 可選,默認gcj02,設置返回的定位結果座標系
int span = 1000;
option.setScanSpan(span);// 可選,默認0,即僅定位一次,設置發起定位請求的間隔需要大於等於1000ms纔是有效的
option.setIsNeedAddress(true);// 可選,設置是否需要地址信息,默認不需要
option.setOpenGps(true);// 可選,默認false,設置是否使用gps
option.setLocationNotify(true);// 可選,默認false,設置是否當gps有效時按照1S1次頻率輸出GPS結果
option.setIsNeedLocationDescribe(true);// 可選,默認false,設置是否需要位置語義化結果,可以在BDLocation.getLocationDescribe裏得到,結果類似於“在北京天安門附近”
option.setIsNeedLocationPoiList(true);// 可選,默認false,設置是否需要POI結果,可以在BDLocation.getPoiList裏得到
option.setIgnoreKillProcess(false);// 可選,默認true,定位SDK內部是一個SERVICE,並放到了獨立進程,設置是否在stop的時候殺死這個進程,默認不殺死
option.SetIgnoreCacheException(false);// 可選,默認false,設置是否收集CRASH信息,默認收集
option.setEnableSimulateGps(false);// 可選,默認false,設置是否需要過濾gps仿真結果,默認需要
mLocationClient.setLocOption(option);
mLocationClient.start();
}
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
String city = location.getCity();
String district = location.getDistrict();
String street = location.getStreet();
Address address = location.getAddress();
Log.i("Main", address.toString());
tv.setText(city + "---" + street+" "+district);
}
}
class MyAdapter1 extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return letter.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View arg1, ViewGroup arg2) {
View view=LayoutInflater.from(MainActivity.this).inflate(R.layout.letter_list, null);
TextView tv=(TextView)view.findViewById(R.id.letterListTextView);
tv.setText(letter[position]);
return view;
}
}
class MyAdapter extends BaseAdapter{
final static int TYPE_1=1;
final static int TYPE_2=2;
@Override
public int getCount() {
// TODO Auto-generated method stub
return letterToCity.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getItemViewType(int position) {
for(int i=0;i<letter.length;i++){
if(letterToCity.get(position).equals(letter[i])){
return TYPE_1;
}
}
return TYPE_2;
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public View getView(int position, View convertView, ViewGroup arg2) {
ViewHolder1 vh1=null;
ViewHolder2 vh2=null;
int type=getItemViewType(position);
if(convertView==null){
switch (type) {
case TYPE_1:
convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.letter, null);
vh1=new ViewHolder1();
vh1.tv=(TextView)convertView.findViewById(R.id.letterTextView);
convertView.setTag(vh1);
break;
case TYPE_2:
convertView=LayoutInflater.from(MainActivity.this).inflate(R.layout.city, null);
vh2=new ViewHolder2();
vh2.tv=(TextView)convertView.findViewById(R.id.cityTextView);
convertView.setTag(vh2);
break;
default:
break;
}
}else{
switch (type) {
case TYPE_1:
vh1=(ViewHolder1)convertView.getTag();
break;
case TYPE_2:
vh2=(ViewHolder2)convertView.getTag();
break;
default:
break;
}
}
switch (type) {
case TYPE_1:
vh1.tv.setText(letterToCity.get(position));
break;
case TYPE_2:
vh2.tv.setText(letterToCity.get(position));
break;
default:
break;
}
return convertView;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()) {
case R.id.listView1:
boolean isLetter = false;
for (int i = 0; i < letter.length; i++) {
if (letter[i].equals(letterToCity.get(position))) {
isLetter = true;
break;
}
}
if (!isLetter) {
Toast.makeText(this, letterToCity.get(position),
Toast.LENGTH_SHORT).show();
}
break;
case R.id.listView2:
for (int i = 0; i < letterToCity.size(); i++) {
if (letter[position].equals(letterToCity.get(i))) {
lv.setSelection(i);
break;
}
}
break;
default:
break;
}
}
class ViewHolder{
TextView tv;
LinearLayout ll;
}
class ViewHolder1{
TextView tv;
}
class ViewHolder2{
TextView tv;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.