Bundle&Intent&for&List&Map&Extra

关于不同的activity之间的传值个人感觉如果两个activity相关的话,使用intent和bundle还是挺多的,如果关联不是很密切的话一般都是用service传值,后文会将四大组建结合起来讲解下,现在先说说bundle,原来博主一般都是直接itntent.putextra();键值对少的时候控制的比较精细,而且感觉也不是很麻烦,但是一旦键值对很多的时候,那就比较可怕了,一个是程序的性能问题,另一便是代码量的问题,不过程序的性能应该优先考虑,好,废话不多说,上代码证明:

这个用的intent自有的传值

for (int i = 0; i < buddhistServicesArray.length; i++) {

BuddhistServicesBean buddhistServicesBeans = new BuddhistServicesBean(bsTitle, bsDetail, bsFirst, bsSecond, bsThird);

String bstitle = buddhistServicesArray[i].getBSTitle();

String bsdetail = buddhistServicesArray[i].getBSDetail();

String bsfirst = buddhistServicesArray[i].getBSFirst();

String bssecond = buddhistServicesArray[i].getBSSecond();

String bsthird = buddhistServicesArray[i].getBSThird();

//博主当时感觉还可以,不是很麻烦,但是多了的话,可想而知,真的让人很头疼,很恶心

Map<String, Object> map = new HashMap<String, Object>();

map.put("bsTitle", bstitle);

map.put("bsDetail", bsdetail);

map.put("bsFirst", bsfirst);

map.put("bsSecond", bssecond);

map.put("bsThird", bsthird);

buddhistServicesList.add(map);

}

Arrays.sort(buddhistServicesArray);

buddhistServicesBeans = Arrays.asList(buddhistServicesArray);

buddhistServicesAdapter = new BuddhistServicesAdapter(getActivity(), buddhistServicesBeans);

buddhistservices_listview.setAdapter(buddhistServicesAdapter);

buddhistservices_listview.setOnItemClickListener(new bsInfoOnItemClickListener());

protected class bsInfoOnItemClickListener implements AdapterView.OnItemClickListener {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Intent it_bs_info = new Intent(getActivity(), BuddhistServicesInfo.class);

for (int i = 0; i <= position; i++) {

if (position == i) {

Map map = (Map) buddhistServicesList.get(i);

String btitle = (String) map.get("bsTitle");

String bdetail = (String) map.get("bsDetail");

String bfirst = (String) map.get("bsFirst");

String bsecond = (String) map.get("bsSecond");

String bthird = (String) map.get("bsThird");

it_bs_info.putExtra("btitle_info", btitle);

it_bs_info.putExtra("bdetail_info", bdetail);

it_bs_info.putExtra("bfirst_info", bfirst);

it_bs_info.putExtra("bsecond_info", bsecond);

it_bs_info.putExtra("bthird_info", bthird);

//传值到下个activity中

}

}

startActivity(it_bs_info);

}

}

这个是下个activity初始化数据的时候从上个activity得到相应的值

private void initData() {

Intent it = this.getIntent();

info_title = it.getStringExtra("btitle_info");

this.bsi_title.setText(info_title);

title = info_title;

String info_detail = it.getStringExtra("bdetail_info");

String info_first = it.getStringExtra("bfirst_info");

String info_second = it.getStringExtra("bsecond_info");

String info_third = it.getStringExtra("bthird_info");

this.bsi_detail.setText(info_detail);

this.bsi_first.setText(info_first);

this.bsi_second.setText(info_second);

this.bsi_third.setText(info_third);

}

好,下面是bundle的事例:

protected class eventInfoOnItemClickListener implements AdapterView.OnItemClickListener {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

Intent it_event_info = new Intent(EventsActivity.this, EventInfoActivity.class);

for (int i = 0; i <= position; i++) {

if (position == i) {

Map map = (Map) eventsList.get(i);

Bundle bundle = new Bundle();

bundle.putString("eventimg_info", (String) map.get("eventImg"));

bundle.putString("eventname_info", (String) map.get("eventName"));

bundle.putString("eventtime_info", (String) map.get("eventTime"));

it_event_info.putExtras(bundle);

}

}

startActivity(it_event_info);

}

}

这样的话是不是简单多了,个人认为bundle是对键值对的封装,而且得到和初始化的时候也很容易,以上代码还涉及到了,list,map,和for循环,activity之间传递的时候用的很多,大家可以学习下

时间: 2024-10-12 07:16:59

Bundle&Intent&for&List&Map&Extra的相关文章

深入了解Bundle和Map

转载自: http://www.devtf.cn/?p=120 https://medium.com/the-wtf-files/the-mysterious-case-of-the-bundle-and-the-map-7b15279a794e 原文链接 : The mysterious case of the Bundle and the Map 前言 因为往Bundle对象中放入Map实际上没有表面上看起来那么容易. 这篇博客是在Eugenio @workingkills Marletti

Intent 传值和 Bundle传值的区别

http://blog.csdn.net/yanzi1225627/article/details/7802819 举个例子  我现在要从A界面   跳转到B界面或者C界面   这样的话 我就需要写2个Intent  如果你还要涉及的传值的话 你的Intent就要写两遍添加值的方法 那么 如果我用1个Bundle  直接把值先存里边 然后再存到Intent中 不就更简洁吗? 另外一个例子  如果我现在有  Activity A ,B ,C:现在我要把值通过A经过B传给C你怎么传 如果用Inten

在Activity之间使用Intent传值和Bundle传值的区别和方式

两者本质上没有任何区别.Bundle只是一个信息的载体 将内部的内容以键值对组织 Intent负责Activity之间的交互 自己是带有一个Bundle的Intent.putExtras(Bundle bundle)直接将Intent的内部Bundle设置为参数里的bundleIntent.getExtras()直接可以获取Intent带有的Bundle intent.putExtra(key, value)和Bundle bundle = intent.getExtras();bundle.p

Intent之使用Extra属性在组件之间传递数据

第一步: 在MainActivity中使用Intent封装数据并传到第二个Activity package com.example.intent; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.view.View.OnClickListen

Activity间用Intent、Bundle、onActivityResult进行传值

其实Activity间的传值就是通过Bundle,intent中也是自动生成了Bundle来传值,里面还有个onActivityResult()方法也可以传送数值. 如果一个Activity是由startActivityForResult启动的,那么这个activity在finish()后就会回调启动它的activity中的onActivityResult()方法. 下面是全部代码: MainActivity.java package com.kale.activity; import andr

【转】Android中intent传递对象和Bundle的用法

原文网址:http://blog.csdn.net/lixiang0522/article/details/8642202 android中的组件间传递的对象一般实现Parcelable接口,当然也可以使用java的Serializable接口,前者是android专门设计的,效率更高,下面我们就来实现一个Parcelabel. 1. 创建一个类实现Parcelable接口,具体实现如下: [java] view plain copy package com.hebaijun.testparce

Android(java)学习笔记146:Bundle和Intent类使用和交互

        Bundle只是一个信息的载体 将内部的内容以键值对组织 ,Intent负责Activity之间的交互自己是带有一个Bundle的.Intent.putExtras(Bundle bundle)直接将Intent的内部Bundle设置为参数里的bundle,Intent.getExtras()直接可以获取Intent带有的Bundle.        Intent携带了Bundle数据,Bundle是一种数据包裹(打包数据),利用Intent机制通过Bundle数据进行不同Act

Activity中Intent传递数据--Bundle

<span style="font-size:18px;">///////////mainAvtivity//////////////</span> <span style="font-size:18px;">package com.demo.clf; import android.app.Activity; import android.content.Intent; import android.os.Bundle; impo

Intent应用详解-Android开发

一.Intent介绍: Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互.因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关