Intent — List 数据传递
程序员文章站
2022-06-01 12:45:07
...
总结一下项目中最近常接触到的:
简单的数据类型我就暂时不赘述了 (今后再继续补充)
实际开发中,一般来说跨界面传递List<对象>集合用的最多
1 - 传List<Object> (Bundle配合Serializable)
——1. 先准备一个实体类Person,实现Serializable接口
package com.example.demo;
import java.io.Serializable;
public class Person implements Serializable{
private String name;
private int age;
private String sex;
public Person(String name,int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
}
——2.在activitiy_main.xml里放个button,然后在MainActivity里利用Bundle携带Serializable数据(需要把list强制转换);最后由intent调用putExtras把bundle保存在intent中
package com.example.demo;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
List<Person> list;
Button button1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<Person>();
list.add(new Person("鸣人", 17, "男"));
list.add(new Person("佐助", 18, "男"));
list.add(new Person("卡卡西", 19, "男"));
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Bundle bundle = new Bundle();
bundle.putSerializable("person", (Serializable) list);
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtras(bundle);
startActivity(intent);
}
});
}
}
——3.在SecondActivity的布局文件中简单定义三个TextView用于显示我们拿到的数据;然后我们在SecondActivity里调用getSerializableExtra(key)拿到bundle携带的数据,并强制转换回List<Person>
package com.example.demo;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class SecondActivity extends Activity{
List<Person> naruto;
TextView tv1,tv2,tv3;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
naruto = (List<Person>) getIntent().getSerializableExtra("person");
String mingren= naruto.get(0).getAge()+"" + naruto.get(0).getName() + naruto.get(0).getSex();
String zuozhu= naruto.get(1).getAge()+"" + naruto.get(1).getName() + naruto.get(1).getSex();
String kakaxi= naruto.get(2).getAge()+"" + naruto.get(2).getName() + naruto.get(2).getSex();
tv1 = (TextView) findViewById(R.id.textView1);
tv2 = (TextView) findViewById(R.id.textView2);
tv3 = (TextView) findViewById(R.id.textView3);
tv1.setText(mingren);
tv2.setText(zuozhu);
tv3.setText(kakaxi);
}
}
运行效果就暂时不贴了。亲测成功。
上一篇: Intent的数据传递
下一篇: eclipse自动补全功能的缺陷
推荐阅读
-
Mybatis如何从数据库中获取数据存为List类型(存为model)
-
php和js如何通过json互相传递数据相关问题探讨
-
Mysql数据库报错:select list is not in group by clause and contains .....sql_mode=only_full_group_by问题
-
List 去除重复数据的几种方法
-
Python把csv数据写入list和字典类型的变量脚本方法
-
【手机上传】jQuery传递数据同时上传文件到php后台接受不到的问题
-
Vue 单文件中的数据传递示例
-
php基于jquery的ajax技术传递json数据简单实例_PHP
-
vuejs动态组件给子组件传递数据的方法详解
-
Vue2.x中的父组件传递数据至子组件的方法