繁体   English   中英

转换清单 <?> 列出 <String> 在Android中

[英]Convert List<?> to List<String> in Android

public List<Contact> getContacts()
{
    SQLiteDatabase db;
    String cmd;
    List<Contact> name = new ArrayList<Contact>();
    db = myDb.getReadableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM contact;" , null);
    while(cursor.moveToNext())
    {
        int contactID       = Integer.parseInt(cursor.getString(0));
        String familyName   = cursor.getString(1);
        String firstName    = cursor.getString(2);
        int houseNumber     = Integer.parseInt(cursor.getString(3));
        String street       = cursor.getString(4);
        String town         = cursor.getString(5);
        String country      = cursor.getString(6);
        String postcode     = cursor.getString(7);
        int telephoneNumber = Integer.parseInt(cursor.getString(8));
        Contact contact     = new Contact(contactID,familyName,firstName,houseNumber,street,town,country,postcode,telephoneNumber);
    }
    Intent intent = new Intent(Database.this,MainActivity.class);
    intent.putStringArrayListExtra("contacts", name);
    startActivity(intent);

    return name;
}

Intent类型的方法putStringArrayListExtra(String, ArrayList<String>)不适用于参数(String, List<Contact>)

为了使用putStringArrayListExtra(); 方法,我需要将List<contact>名称转换为List名称,如何将其转换? 谢谢

因为对象列表实际上不是字符串列表,所以据我所知,最好的方法是遍历list并将每个项目转换为新的字符串列表:

List<String> stringsList = new ArrayList<>(list.size());
for (Object object : list) {
    stringsList.add(Objects.toString(object, null));
}

似乎您正在尝试通过IntentList<Contacts>传递给-

没有必要使用putStringArrayListExtra()方法作为有putParcelableArrayList()使用其中可以传递方法ArrayList<Contact>直接。

只需使用,

putParcelableArrayList("KEY", your ArrayList<Contact>); // Make sure Contact implementes Parcelable 

您可以在Receiver Activity获取ArrayList<Contact> -

Bundle b = getIntent().getExtras();
ArrayList<Contact> data = b.getParcelableArrayList("KEY");

但是,您可以使用Serializable代替Parcelable但是建议使用Parcelable ,因为它就像Flash。 这是为什么呢?

首先声明一个新的字符串数组。

List<String> newList = new ArrayList<String>(list.size());
newList.addAll(list);

这会将所有元素添加到新的字符串列表中。 list是您以前的容器。

为了使用Parceble在组件之间传递对象,Android还使用Binder以高度优化的方式促进了此类通信。 活页夹与作为消息容器的包裹进行通信。 活页夹将要打包的包裹封送,发送和接收,然后在另一端解封以重建原始包裹的副本。请在此处继续阅读。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM