2013-03-06 5 views
0

Итак, я хочу отправить данные из одной активности в другую с помощью ArrayList объектов. Ниже приведен код класса, который я хочу использовать в качестве объекта. Поэтому, пожалуйста, скажите мне, где я ошибаюсь.Передача ArrayList объекта из одной активности в другую в android

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

}

+0

посмотреть «Как передать данные между различными видами деятельности/Услуги в одно приложение? " http://developer.android.com/guide/faq/framework.html#3 – vokilam

ответ

0

Попробуйте это поставить вас ArrayList с помощью putStringArrayListExtra

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

И получить ArrayList.

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

первая активность

 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"); 
0

Первый в пользовательском классе создать два метода

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

Enjoy ....

Смежные вопросы