Intent传递集合数据

本文通过一个Demo展示了在Android中如何使用Intent在Activity之间传递数据,特别是集合类型的数据。关键点在于确保集合中存储的对象实现了Serializable接口,以便顺利进行通信和数据显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android中Activity与Activity之间相互传递一般都是通过Intent来进行之间的通信,所谓通信就是数据之间的传输,不要被所谓的名字吓到了,现在新建一个Demo 演示Activity之间是如何通过Intent传递数据,


activity_main.xml 就一个简单的Button按钮

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button 
        android:id="@+id/btn_pass"
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:text="传递集合数据"
        />
</LinearLayout>


MainActivity.java

public class MainActivity extends Activity {
	private Button btn_pass;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btn_pass = (Button) findViewById(R.id.btn_pass);
		btn_pass.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
					ArrayList<Person> persons = new ArrayList<Person>();
					for(int i=0;i<1000;i++){
						Person p = new Person();
						p.age = i+1;
						p.name="a"+i;
						persons.add(p);
					}
					
					Intent intent  = new Intent(MainActivity.this,SecnodActivity.class);
					intent.putExtra("persons", persons);
					startActivity(intent);
			}
		});
	}
}

person.java传递的实体类,

<pre class="java" name="code">public class Person implements Serializable{
	private static final long serialVersionUID = 1L;
	public int age;
	public String name;
}

 

Person就封装了二个属性 但是Person类是实现了Serializable接口


点击按钮跳转到SecnodActivity.java 界面中,然后通过listview把传递过来的数据展示在界面上

public class SecnodActivity extends Activity {
	private ListView listview;
	private List<Person>  persons;
	private LayoutInflater inflater;
		protected void onCreate(android.os.Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.activity_secnod);
			Intent intent  = getIntent();
			if(intent!=null){
				persons = (List<Person>) intent.getSerializableExtra("persons");
			}
			listview = (ListView) findViewById(R.id.listview);
			inflater = LayoutInflater.from(this);
			MyAdapter adapter = new MyAdapter();
			listview.setAdapter(adapter);
		}
		
		class MyAdapter extends BaseAdapter{

			@Override
			public int getCount() {
				return persons.size();
			}

			@Override
			public Object getItem(int position) {
				return persons.get(position);
			}

			@Override
			public long getItemId(int position) {
				return position;
			}

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {
				ViewHolder viewHolder;
			    if(convertView==null){
			    	viewHolder = new ViewHolder();
			    	convertView = inflater.inflate(R.layout.item, null);
			    	viewHolder.tvAge = (TextView) convertView.findViewById(R.id.tvAge);
			    	viewHolder.tvName = (TextView) convertView.findViewById(R.id.tvName);
			    	convertView.setTag(viewHolder);
			    }else{
			    	viewHolder = (ViewHolder) convertView.getTag();
			    }
			    viewHolder.tvAge.setText("年龄:  "+persons.get(position).age);
			    viewHolder.tvName.setText("年龄:  "+persons.get(position).name);
			    
				return convertView;
			}
		}
		class ViewHolder{
			TextView tvAge;
			TextView tvName;
		}
}


界面图:


总结:总之通过Intent传递集合时,记得把集合中存储的对象实现Serializable接口



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值