您的位置:首页 > 其它

百度地图的一个项目,自定义适配器的一个示例

2016-04-20 11:32 489 查看
百度地图的一个项目,自定义适配器的一个示例

public class DituActivity extends Activity {

ListView listView;
Adapter1 adapter1;
Context ct=this;
List<A> aList=new ArrayList<>();
//每一个经纬度
LatLng llTAMSquare= new LatLng(39.915125,116.403963);//天安门广场
LatLng llCompany= new LatLng(39.832889,116.309002);//RT
LatLng llRailway= new LatLng(39.91027, 116.433604);//北京站
LatLng llMuseum= new LatLng(39.912484, 116.349091);//首都博物馆
LatLng llZoo= new LatLng(39.94723, 116.341617);//北京动物园
LatLng llDZMStation= new LatLng(39.947506, 116.440071);//东直门枢纽站
LatLng llGDUniversity= new LatLng(40.221614, 116.659119);//GD
LatLng llNYAirport = new LatLng(39.797384, 116.403564);//北京南苑机场

int layout=R.layout.ditu_layout;//换布局文件时在这里改即可
int item_layout=R.layout.item;
int listview_id=R.id.listView;
int tv_id=R.id.tv_item;
int iv_id=R.id.item_image;

MapView mMapView;
BaiduMap mBaiduMap;

LinearLayout linearLayout;//隐藏列表用
Button button_ditu_list;//隐藏列表用

A aTAMSquare;A allCompany;A aRailway;A aMuseum;
A aZoo;A aDZMStation;A aGDUniversity;A aNYAirport;//几个要用的位置

class A{
String string;
int Id;
LatLng latLng;

A(LatLng latLng1, int id,String string) {
this.string = string;
Id = id;
latLng=latLng1;
}
String getString(){return string;}
int getId(){return Id;}
}

class Adapter1 extends ArrayAdapter<A>{
int item_layout;
Adapter1(Context context, int item_layout, List objects) {
super(context, item_layout, objects);
this.item_layout =item_layout;
}
class ViewHolder{
ImageView imageView;
TextView textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
A a=  getItem(position);
ViewHolder vh;
if(convertView==null){
LayoutInflater li=LayoutInflater.from(getContext());
convertView=li.inflate(item_layout, null);
vh=new ViewHolder();
vh.imageView=(ImageView)convertView.findViewById(iv_id);
vh.textView=(TextView)convertView.findViewById(tv_id);
convertView.setTag(vh);
}else {
vh= (ViewHolder) convertView.getTag();
}
vh.textView.setText(a.getString());
vh.imageView.setImageResource(a.getId());
return convertView;
}
}
private class sOICL implements android.widget.AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
A a=aList.get(position);
ToCenter(a.latLng, 14);
}
}
private class sOMCL implements BaiduMap.OnMarkerClickListener {
@Override
public boolean onMarkerClick(Marker marker) {
String string=(String)marker.getExtraInfo().get("key");
ShowDialog(string, marker.getPosition());
return true;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initList();
initView();
initAdapter();
listView.setOnItemClickListener(new sOICL());//到中间

list_hide();//隐藏列表
for (A a:aList){//添加每一个位置
ShowOverlay(a.latLng,a.Id,a.string);
}
mBaiduMap.setOnMarkerClickListener(new sOMCL());
}
void ShowOverlay(LatLng llA, int imageId,String loc){
BitmapDescriptor bdA = BitmapDescriptorFactory.fromResource(imageId);
OverlayOptions optionA = new MarkerOptions().position(llA).icon(bdA);
Marker marker= (Marker) mBaiduMap.addOverlay(optionA);
Bundle bundle=new Bundle();
bundle.putSerializable("key", loc);
marker.setExtraInfo(bundle);
}
void list_hide(){
//列表隐藏和显示
linearLayout=(LinearLayout)findViewById(R.id.layout_ditu_list);
button_ditu_list=(Button)findViewById(R.id.button_ditu_list);
button_ditu_list.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (linearLayout.getVisibility() == View.VISIBLE) {
linearLayout.setVisibility(View.GONE);
button_ditu_list.setText("显示列表");
} else {
linearLayout.setVisibility(View.VISIBLE);
button_ditu_list.setText("隐藏列表");
}
}//onClick
});
}
void initView(){
SDKInitializer.initialize(getApplicationContext());
setContentView(layout);
listView=(ListView)findViewById(listview_id);
mMapView=(MapView)findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
}
void initList(){
aTAMSquare=new A(llTAMSquare, R.drawable.icon_marka,"天安门广场");
allCompany=new A(llCompany, R.drawable.icon_markb,"RT");
aRailway=new A(llRailway, R.drawable.icon_markc,"北京站");
aMuseum=new A(llMuseum, R.drawable.icon_markd,"首都博物馆");
aZoo=new A(llZoo, R.drawable.icon_marke,"北京动物园");
aDZMStation=new A(llDZMStation, R.drawable.icon_markf,"东直门枢纽站");
aGDUniversity=new A(llGDUniversity, R.drawable.icon_markg,"GD");
aNYAirport=new A(llNYAirport, R.drawable.icon_markh,"南苑机场");
aList.add(aTAMSquare);
aList.add(allCompany);
aList.add(aRailway);
aList.add(aMuseum);
aList.add(aZoo);
aList.add(aDZMStation);
aList.add(aGDUniversity);
aList.add(aNYAirport);
}
void initAdapter(){
adapter1=new Adapter1(ct,item_layout,aList);
listView.setAdapter(adapter1);
}

@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}

void ToCenter(LatLng llA,int zoom){
MapStatus mMapStatus = new MapStatus.Builder().target(llA).zoom(zoom).build();
MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
mBaiduMap.setMapStatus(mMapStatusUpdate);
}

//对话框
void ShowDialog(String loc,LatLng latLng){
AlertDialog.Builder dialog=new AlertDialog.Builder(ct);
//dialog.setTitle("这是标题");
dialog.setMessage("location:"+loc+"\n"+latLng.toString());
dialog.setCancelable(true);
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

}
});dialog.show();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: