StartActivityForResult和Adapter写法

实现一个目标:地图图层切换。

首先图层切换代码通过高德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);
// 结束DrawActivityDrawActivity.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完成我这个任务更加简单。。为什么我不用呢?第一:我不会啊,,第二,,我尝试的时候出了点问题,,暂时先不用吧。。







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值