首页 > 编程知识 正文

java对象结构,java中list的用法

时间:2023-05-05 13:04:55 阅读:154346 作者:1921

上一篇文章介绍了如何使用Parcelable实现Intent之间的对象传递

一.实现对象传递

首先,创建User.java实现Parcelable接口。

package org.yayun.demo;

import java.io.Serializable;

import android.R.integer;

import android.os.Parcel;

import android.os.Parcelable;

publicclassuserimplementsparcelable {

私有字符串名称;

私有级别;

公共字符串获取名称

return name;

}

公共void set name (string name ) {

this.name=name;

}

公共获取级别(

返回级别;

}

公共void set level (int level ) {

this.level=level;

}

公共用户(string name,int level ) {

this.name=name;

this.level=level;

}

公共用户()//构建方法

}

公共说明内容(()/)写入方法

返回0;

}

publicvoidwritetoparcel (parcel parcel,int flags ) )//写入方法

Parcel.writestring(name );

Parcel.writeint(level );

}

publicstaticfinalparcelable.creator creator=new creator () )//必须实现的方法

公共资源框架(parcel source ) {

用户用户=new user (;

user.name=source.readString (;

user.level=source.readInt (;

返回用户;

}

公共用户[ ] new array (intsize ) {

return new User[size];

}

(;

}

Parcelable.Creator必须实现。 如果不实现,则会报告错误。

让我们看看两个Activity

1.MainActivity.java

package org.yayun.demo;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import Android.view.view.onclick listener;

import android.widget.Button;

publicclassmainactivityextendsactivity {

私有button button;

公共语音创建(bundlesavedinstancestate )。

super.oncreate (savedinstancestate; //生命周期方法

super.setcontentview (r.layout.main ); //配置要使用的布局管理器

button=(button ) findviewbyid ) r.id.BTN;

button.setonclicklistener (newonclicklistener ) )。

公共void onclick (viewv ) {

useruser1=newuser('Yayun ',7 ); //实例化对象

Intent intent=new Intent (;

intent.setclass (main activity.this,LoginActivity.class );

p>Bundle bundle = new Bundle();

bundle.putParcelable("user", user1);// 序列化

intent.putExtras(bundle);// 发送数据

startActivity(intent);// 启动intent

}

});

}

}

2.LoginActivity.java:

package org.yayun.demo;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.widget.TextView;

public class LoginActivity extends Activity {

private TextView textView;

User user;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); // 生命周期方法

super.setContentView(R.layout.login); // 设置要使用的布局管理器

textView = (TextView) findViewById(R.id.text);

Intent intent = this.getIntent();

user = (User) intent.getParcelableExtra("user");

textView.setText("username:" + user.getName() + "用户等级"

+ String.valueOf(user.getLevel()));

}

}

3.执行实比例如以下:

能够看到和实现Serialiable接口一样的结果。

二、实现对象集合传递

这里我们仅仅须要修改两个Activity

1.MainActivity.java:

package org.yayun.demo;

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 {

private Button button;

List list=new ArrayList();

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); // 生命周期方法

super.setContentView(R.layout.main); // 设置要使用的布局管理器

button = (Button) findViewById(R.id.btn);

button.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

User user1 = new User("yayun", 7);// 实例化对象

User user2=new User("feifei",9);

list.add(user1);

list.add(user2);

Intent intent = new Intent();

intent.setClass(MainActivity.this, LoginActivity.class);

Bundle bundle = new Bundle();

bundle.putParcelableArrayList("list",(ArrayList)list);// 序列化,要注意 intent.putExtras(bundle);// 发送数据

startActivity(intent);// 启动intent

}

});

}

}

2.LoginActivity.java

package org.yayun.demo;

import java.util.List;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.widget.TextView;

public class LoginActivity extends Activity {

private TextView textView;

List list;

User user2;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); // 生命周期方法

super.setContentView(R.layout.login); // 设置要使用的布局管理器

textView = (TextView) findViewById(R.id.text);

Intent intent = this.getIntent();

list = intent.getParcelableArrayListExtra("list");//getParcelableArrayListExtra方法

user2=(User)list.get(1);

textView.setText("username:" + user2.getName() + "用户等级"

+ String.valueOf(user2.getLevel()));

}

}

3.执行实例:

执行成功!

最后注意在AndroidManifest.xml文件里配置LoginActivity

总结

1.实现Parcelable接口注意覆写几个方法和实现Parcelable.Creator方法;

2.bundle.putParcelable("user", user1);// 序列化

3.user = (User) intent.getParcelableExtra("user");//获取对象

4.bundle.putParcelableArrayList("list",(ArrayList)list);//存入List对象数组

5.list = intent.getParcelableArrayListExtra("list");//getParcelableArrayListExtra方法获取对象数组

6.系统好像仅仅提供了List对象数组的传递方法,其它集合怎么传递?希望kddbl告知。

喜欢的朋友点个赞呗。关注一下呗!

谢谢

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。