2014-02-08 3 views
0

Я храню свои uri's в ArrayList<Uri> imageUri = new ArrayList<Uri>();Как преобразовать ArrayList <Uri> в строку?

Как преобразовать их в строку? Я планирую хранить их в базе данных sqlite.

обновление:

ListView listView; 
ArrayList<Uri> imageUri = new ArrayList<Uri>(); 
ArrayAdapter<Uri> arrayAdapter; 

arrayAdapter = new ArrayAdapter<Uri>(getActivity(), android.R.layout.simple_list_item_1, imageUri); 
listView = (ListView) view.findViewById(R.id.listView1); 
listView.setAdapter(arrayAdapter); 

if (!imageUri.isEmpty()) { 

     Uri uri0 = imageUri.get(0); 
     String uri_0 = uri0.toString(); 
} 

Правильно ли делать это таким образом? Хранение uri_0 в базе данных sqlite. Таким образом, я получаю каждый uri за индекс?

+2

Цикл по списку и создать новый список с строковым представлением каждого Ури. Где вы застряли? –

+0

Я думаю, что это должно быть 'List ' –

+0

@JeroenVannevel Я обновил свой вопрос и разместил некоторые коды .. – Jane

ответ

0

Я бы просто вызвал метод toString() по вашему объекту URI, который вернет строковое представление URI. После этого вам нужно будет только перебрать ArrayList и вызвать этот метод и сделать все, что вам нужно, с возвращаемым значением.

+5

У класса 'Uri' уже есть' toString() ', который предоставляет строковое представление: https://developer.android.com/reference/android/net/Uri.html – CommonsWare

+0

Правда, что! Я обновил свой ответ, спасибо! – nKn

1

Для этого можно использовать простой для каждого цикла.

for (Uri uri: imageUri) { 
     String uriString = uri.toString(); 
     // do whatever you want with your string 
} 

Чтобы поместить их все в одну строку.

String completeString = new String(); 
for (Uri uri: imageUri) { 
     completeString += uri.toString(); 
} 
// now you can put that String in your db or whatever you want to do with it.. 
+0

Если я получаю эту строку и помещаю ее в sqlite следующим образом: HashMap data = new HashMap (); data.put ("imageUri", uriString); он объединяет строки и помещает их в одну колонку? – Jane

+0

Вы хотите, чтобы строка просто сконцентрировалась? Я обновил свой ответ. Таким образом, вы получаете все строки в одной строке. – Endzeit

+0

Конкатенация строк в цикле должна выполняться с помощью StringBuilder или StringBuffer (зависит от требований безопасности потока). – fl0w

0

Самый простой и чистый способ (с J8), вероятно, использует лямбды:

List<String> targetList = new ArrayList<String>(); imageUri.forEach(uri -> targetList.add(uri.toString()));

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