【问题标题】:Passing ArrayList of an object from one activity to another in android在android中将对象的ArrayList从一个活动传递到另一个活动
【发布时间】:2013-03-06 09:02:25
【问题描述】:

所以情况是我想借助对象的 ArrayList 将数据从一个活动发送到另一个活动。下面是我想用作对象的类代码。所以请告诉我我哪里出错了。

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;
}

}

【问题讨论】:

标签: android


【解决方案1】:

试试这个,用putStringArrayListExtra把你的arraylist放在

Intent i = new Intent(MainActivity.this,Nextactivity.class);
i.putStringArrayListExtra("arraylist", arraylist);

并得到arraylist。

Intent i = getIntent();
list = i.getIntegerArrayListExtra("arraylist");

【讨论】:

    【解决方案2】:

    第一次活动

            Arraylist<String> values;
    
            Intent it=new Intent(MainActivity.this,Next.class);
            it.putExtra("value", values);
            startActivity(it);
    

    第二次活动

      Arraylist<String> list;
    
    list=(ArrayList<String>) getIntent().getSerializableExtra("value");
    

    【讨论】:

      【解决方案3】:

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

      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();
          } 
      }
      

      }

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

          @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();
      }
      

      并在接收器上创建另一个函数

          @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;
      }
      

      享受....

      【讨论】:

        猜你喜欢
        • 2021-03-15
        • 1970-01-01
        • 2018-10-10
        • 1970-01-01
        • 1970-01-01
        • 2023-01-11
        • 2013-01-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多