【问题标题】:I want to pass List<> from Activity A to B我想将 List<> 从活动 A 传递给 B
【发布时间】:2015-03-08 12:41:28
【问题描述】:

我设置了一个名为“Contact”的类,Contact 类包含Getters 和Setters。 在主活动中。

List<Contact> contactList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}

private class GetContacts extends AsyncTask<String, String, List<Contact>>{

    @Override
    protected void onPreExecute() {

        // 
    }
    @Override
    protected List<Contacts> doInBackground(String... params) {
        // executing some tasks;
        return contactList;
    }
    @Override
    protected void onPostExecute(List<Contact> result) {
        contactList = result;

    }

现在我想将联系人列表发送到另一个活动。

【问题讨论】:

  • 您要设置适配器吗?

标签: android list android-intent


【解决方案1】:

如果T 类型是Serializable,您可以以同样的方式传递ArrayList&lt;T&gt;

您可以调用IntentputExtra (String name, Serializable value) 进行存储,调用getSerializableExtra (String name) 进行检索。

例子:

ArrayList<String> your_list= new ArrayList<String>();
intent.putExtra("your_list", your_list);

在另一个活动中:

ArrayList<String> your_list = (ArrayList<String>) getIntent().getSerializableExtra("your_list");

【讨论】:

  • 不,我想传递联系人列表。哪个是 List contactList;
【解决方案2】:
putParcelableArrayListExtra(String keyValue, ArrayList< ? extends Parcelable);

使用 Intent 类中的上述方法。 注意:自定义类(?)必须实现 Parcelable 接口类。

【讨论】:

    【解决方案3】:

    你的 Contact.java 类

    public class GymItem implements Serializable{
    }
    

    MainActivity.class

    Intent intent = new Intent(MainActivity.this,
                        OtherActivity.class);
    Bundle bundleObject = new Bundle();
    bundleObject.putSerializable("KEY", contactList);
    intent.putExtras(bundleObject);
    startActivity(intent);
    

    OtherActivity.java

    ArrayList<Contact> contactList = new ArrayList<Contact>();
    
    Bundle bundleObject = getIntent().getExtras();
    contactList = (ArrayList<Contact>) bundleObject
                .getSerializable("KEY");
    

    【讨论】:

      【解决方案4】:

      A 类扩展 Activity{

      List<Contact> contactList;  //your contact list
      
      Intent AtoB = new Intent(getApplicationContext(),B.class);
      AtoB.putParcelableArrayListExtra("Contacts",contactList);
      startActivity(AtoB);
      

      }

      class Contact implements Parcelable{
      private String name;
      private String phoneNo;
      
      @Override
      public int describeContents() {
          return 0;
      }
      
      @Override
      public void writeToParcel(Parcel dest, int flags) {
          dest.writeString(name);
          dest.writeString(phoneNo);
      
      }
      public Contact(){
      
      }
      
      private Contact(Parcel in) {
          name = in.readString();
          phoneNo = in.readString();
      
      
      }
      
      public static final Parcelable.Creator<Contact> CREATOR = new Parcelable.Creator<Contact>() {
      
      
          public Contact[] newArray(int size) {
              return new Contact[size];
          }
          public ContactcreateFromParcel(Parcel in) {
              // TODO Auto-generated method stub
              return new Contact(in);
          }
      
      }; 
      }
      
       class B extends Activity{
      
       ArrayList<Contact> listfromA = 
       getIntent().getParcelableExtra("Contacts"); 
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 2018-07-10
        • 1970-01-01
        • 2017-06-26
        • 2015-03-16
        • 2020-02-06
        相关资源
        最近更新 更多