传递对象的ArrayList中从一个活动到另一个机器人 [英] Passing ArrayList of an object from one activity to another in android

查看:108
本文介绍了传递对象的ArrayList中从一个活动到另一个机器人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以的情况下,我想从一个活动发送数据到另一个对象的ArrayList的帮助。下面是我想的对象,使用类code。所以,请告诉我,我要去的地方错了。

So the case is i want to send data from one activity to another with the help of ArrayList of objects. Below is the class code which i want to use as object. So please tell me that where i am going wrong.

class UserData implements Parcelable{
private String name, phone, city, username, password;
private String userDetails[];
private UserData(Parcel in){
    city = in.readString();
    name = in.readString();
    password = in.readString();
    phone = in.readString();
    username = in.readString();
}
@Override
public int describeContents() {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public void writeToParcel(Parcel out, int flags) {
    // TODO Auto-generated method stub
    out.writeStringArray(getDetails());
}

public static final Parcelable.Creator<UserData> CREATOR = new Parcelable.Creator<UserData>() {
    public UserData createFromParcel(Parcel in){
        return new UserData(in);
    }

    @Override
    public UserData[] newArray(int size) {
        // TODO Auto-generated method stub
        return new UserData[size];
    }
};
/*set method to set all the data that will be taken from the edit texts*/
public UserData(String n, long p, String c, String user, String pass){
    name = n;
    phone = Long.valueOf(p).toString();
    city = c;
    username = user;
    password = pass;
}

/*get method to retrieve data in others activities such as signin and detailspage*/
String[] getDetails(){
    userDetails = new String[]{name, phone, city, username, password};
    return userDetails;
}

}

推荐答案

首先,在您的自定义类中创建两个方法

First in your custom Class create two methods

public class Qabir {

public int age;
public String name;

Qabir(){
}

Qabir(int age,String name){
    this.age=age; this.name=name;
}   

// method for sending object
public String toJSON(){
    return "{age:" + age + ",name:\"" +name +"\"}";
}

// method for get back original object
public void initilizeWithJSONString(String jsonString){

    JSONObject json;        
    try {
        json =new JSONObject(jsonString );
        age=json.getInt("age");
        name=json.getString("name");
    } catch (JSONException e) {
        e.printStackTrace();
    } 
}

}

然后创建一个函数来发送对象列表

then create a function to send object list

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Qabir q1 = new Qabir(22, "KQ");
    Qabir q2 = new Qabir(23, "K Q");
    Qabir q3 = new Qabir(24, "K_Q");

    ArrayList<Qabir> list = new ArrayList<Qabir>();

    list.add(q1);
    list.add(q2);
    list.add(q3);

    Intent in = new Intent(this, SubActivity.class);
    in.putExtra("obj", arrayListToJSON(list));
    startActivity(in);
}

private String arrayListToJSON(ArrayList<Qabir> al) {
    JSONArray array = new JSONArray();
    try {
        for (int i = 0; i < al.size(); i++) {
            array.put(new JSONObject(al.get(i).toJSON()));
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return array.toString();
}

和接收器上创建另一个函数

and create another function on receiver

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ArrayList<Qabir> list = new ArrayList<Qabir>();

    list = getObjectList(getIntent().getStringExtra("obj"));

    Log.e("Activity 2", "" +list.size());
}

private ArrayList<Qabir> getObjectList(String st) {

    ArrayList<Qabir> list = new ArrayList<Qabir>();
    JSONArray array = null;
    try {
        array = new JSONArray(st);
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    for (int i = 0; i < array.length(); i++) {
        try {
            Qabir q= new Qabir();
             q.initilizeWithJSONString(""+array.get(i));
             list.add(q);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    return list;
}

享受....

Enjoy....

这篇关于传递对象的ArrayList中从一个活动到另一个机器人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆