[英]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));
}
似乎您正在尝试通过Intent
将List<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.