实现一个目标:地图图层切换。
首先图层切换代码通过高德api已知:
aMap.setMapType(AMap.MAP_TYPE_SATELLITE);//卫星地图
aMap.setMapType(AMap.MAP_TYPE_NORMAL);//标准地图
想法:通过点击进入下一个activity然后返回参数跳转。因此用到了StartActivityForResult。
第一步:
Intent intent =new Intent(MainActivity.this,DrawActivity.class); startActivityForResult(intent,1);
跳转到下一个Activity里面。1是请求码,用来标识请求。
第二步:
在下一个Activity中:
// 获取启动该Activity之前的Activity对应的Intent Intent intent = getIntent(); intent.putExtra("position",position); // 设置该DrawActivity的结果码,并设置结束之后退回的Activity DrawActivity.this.setResult(1, intent); // 结束DrawActivity。 DrawActivity.this.finish();
这就跳转回到了MainActivity。
第三步:
在主函数写接收:@Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { //当requestCode,resultCode同时为1,也就是前面定义的请求码和结果码 if(requestCode == 1 && resultCode == 1) { //取出Intent里的Extras数据,没接到值的时候就给data赋值0 int data = intent.getIntExtra("position",0); } }
至此完成。
Adapter
刚才的第二个Activity里面就只有一个Listview,而且是很简陋的只有两项的listview,可以使用最简单的adapter进行填充。
listView = (ListView)findViewById(R.id.list_maps); adapter =new MyListAdapter(DrawActivity.this,list); listView.setAdapter(adapter);
list里面是两项的名字,List<String>类型的参数。adapter我习惯自己写,如下。
public class MyListAdapter extends BaseAdapter { private Context context; private List<String> list; public MyListAdapter(Context context, List<String> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = LayoutInflater.from(context).inflate(R.layout.list_item, null); ViewHolder holder = new ViewHolder(); holder.map = (TextView)view.findViewById(R.id.agent_name); holder.map.setText(list.get(position)); return view; } class ViewHolder { TextView map; } }
最后,list_item布局也要自己制作。。(所以我讨厌写这些麻烦的东西)
里面只有一个Textview交agant_name就不贴代码了。
然后就是调试,,不用说,,以我的水平,必然有错误,,看看吧。。。额外的activity已经加入了manifests
一般在adapter的getview函数第一句加上一个断点,在adapter = new。。。。加上一个断点。在intent跳转加上断点。
最后,改完错误,完成任务。。
其实有个侧边栏方法,DrawerLayout完成我这个任务更加简单。。为什么我不用呢?第一:我不会啊,,第二,,我尝试的时候出了点问题,,暂时先不用吧。。