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

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

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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值