android - 2 Arrays(drawble) aus xml in einen Array zusammenfügen

  • Antworten:7
Sergej
  • Forum-Beiträge: 5

24.04.2014, 11:48:37 via Website

Hallo, ich bin Neuling in der android app Entwicklung stehe momentan an einem kleinen Problem.

folgendes:

Ich benutze Mehrere Arrays für eine ListView aus XML wie folgt:

 <string-array name="Name1">
 <item> Artikel 1</item>
 <item> Artikel 2</item>
 <item> Artikel 3</item>
 <item> </item>

</string-array>
string-array name="Number1">
<item> Art.-Nr.: 5000001 </item>
<item> Art.-Nr.: 5000002 </item>
<item> Art.-Nr.: 5000003 </item>
</string-array>

<array name="Img1">
<item> @drawable/pic_1 </item>
<item> @drawable/pic_2 </item>
<item> @drawable/pic_3 </item>
</array>
<string-array name="Name2">
<item> Artikel 4</item>
<item> Artikel 5</item>
<item> Artikel 6</item>
<item> </item>

</string-array>
<string-array name="Number2">
<item> Art.-Nr.: 5000004 </item> 
<item> Art.-Nr.: 5000005 </item>
<item> Art.-Nr.: 5000006 </item>
</string-array>

<array name="Img2">
<item> @drawable/pic_4 </item>
<item> @drawable/pic_5 </item>
<item> @drawable/pic_6 </item>
</array>

In der Liste zeige ich 2 x Text und ein Bild an über einen CustomAdapter an. Dies gilt nur für je 1 String-Array und Array(Image) . Nun möchte ich die Arrays zusmmenfügen damit ich über alles einen Filter setzen kann. (Name1 und Name 2, Number1 und Number2, Img1 und Img2).

Die Text-Arrays bekomme ich so zusammen(Ausschnitt aus Java Code), das funktioniert: private String[] NameAll;

Resources res = getResources();

String[] name1 = res.getStringArray(R.array.Name1);
String[] name2 = res.getStringArray(R.array.Name2);

ArrayList<String> name = new ArrayList<String>();
name.addAll(Arrays.asList(name1));
name.addAll(Arrays.asList(name2));
NameAll = name.toArray(new String[name1.length+name2.length]);

Bei den Bildern benutze ich TypedArray um diese darzustellen, diese bekomme ich leider nicht zusammen. Habe dies wie folgt ausprobiert:

 private TypedArray Images;

TypedArray img1 = res.obtainTypedArray(R.array.Img1);
TypedArray img2 = res.obtainTypedArray(R.array.Img2):

ArrayList<TypedArray> img = new ArrayList<TypedArray>();
img.addAll(Arrays.asList(img1));
img.addAll(Arrays.asList(img2));
Images = img.toArray(new TypedArray(img1.length()+img2.length);

Kann mir jemand helfen? Wie könnte ich das Problem lösen? Habe leider keine Hilfe finden können im Netz...

Vielen Dank

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.04.2014, 11:58:20 via Website

Wieso machst du überhaupt 2 Arrays, reicht da nicht eins, zumal es eh alles Bilder sind.
Da kannst du doch alle in ein Array schreiben. Wieso nimmst du dafür ein TypedArray? Bingt das irgendwelche Vorteile?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sergej
  • Forum-Beiträge: 5

24.04.2014, 12:19:27 via Website

Ich habe sogar mehr als 2 Arrays im Projekt, momentan je 3 pro Kategorie(je 7 Name, Nummer, Bild). Ich habe diverse Artikellisten Listen mit Name, Nummer und Bild. Diese unterteile ich nach Kategorien, aus diesem Grund nehme ich mehrere Array - pro Kategorie quasi.

Jetzt möchte ich in einer Liste alle Artikel zusammen haben um eine Suchfunktion über alle Artikel zu machen.

Danke

Antworten
Sergej
  • Forum-Beiträge: 5

24.04.2014, 15:18:46 via Website

Danke, das habe ich die Lösung für die Strings-Arrays her. Mit TypedArray verstehe ich das einfach nicht.... Hast du ein Beispiel?

Gibt es vielleicht einen anderen Weg die Bilder aus XML-Array ohne TypedArray zu bekommen?

Danke sehr Sergej

Antworten
Sergej
  • Forum-Beiträge: 5

24.04.2014, 15:55:25 via Website

Habe die Lösung, kann leider kein Link veröffentlichen, da ich neu bin:(

Gruß

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.04.2014, 21:53:35 via App

Dann poste den link mit einem Leerzeichen oder so. Damit andere Leute auch was davon haben.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sergej
  • Forum-Beiträge: 5

30.04.2014, 13:07:41 via Website

hier ein Beispiel wie das Problem gelöst wurde habe:

TypedArray imgs1 = res.obtainTypedArray(R.array.Imgs1);
TypedArray imgs2 = res.obtainTypedArray(R.array.Imgs2):
ArrayList&lt;Integer&gt; imgInts = new ArrayList&lt;Integer&gt;();

int nr = -1;
while ( ++nr &lt; imgs1.length() )
    imgsInts.add (imgs1.getResourceId(nr, 0)); 

nr = -1;
while ( ++nr &lt; imgs2.length() )          
   imgsInts.add (img1.getResourceId(nr, 0));  

int[] ResIds = new int[imgsInts.size()];
for (int i=0; i &lt; imgsInts.size(); i++)
 {
 ResIds[i] = ((Integer) imgsInts.get(i)).intValue();
 }

Gruß

Antworten