2016-04-09 20 views
0

Kodumda 6 dizim var (son 5 boş olabilir). Her nesnenin bir adı vardır ve dizi her nesnenin çoğuna sahip olabilir (her dizi sıralanır, böylece her öğe gruplanır).ImageView/textView diğerlerinin sağında nasıl eklenir ImageView/textView aynı düzende

Önce bu xml dosyası vardır:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/fond4" 
android:orientation="vertical" 
tools:context="${relativePackage}.${activityClass}" > 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginTop="20dp" 
    android:background="@color/white" 
    android:gravity="center" 
    android:text="@string/commentOpti" 
    android:textSize="20sp" /> 

<Button 
    android:id="@+id/choisirTroupe" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginTop="20dp" 
    android:onClick="soumission" 
    android:text="@string/lancer" /> 

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     tools:context="${relativePackage}.${activityClass}" > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:layout_marginTop="20dp" 
      android:background="@color/white" 
      android:gravity="center" 
      android:text="@string/casernes" 
      android:textSize="20sp" /> 

     <!-- Caserne 1 --> 

     <LinearLayout 
      android:id="@+id/caserne1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:background="@color/white" 
      android:orientation="horizontal" > 

      <ImageView 
       android:layout_width="40dp" 
       android:layout_height="40dp" 
       android:layout_marginLeft="10dp" 
       android:background="@drawable/caserne" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="10dp" 
       android:text="@string/deuxPoints" 
       android:textSize="25sp" /> 
     </LinearLayout> 

     //Then 5 other like this 1st linearLayou 
     //The ids are incremented each time like caserne2 for the 2nd etc... 


</ScrollView> 

Bu şuna benzer: https://gyazo.com/17a1276dfff5521d540fb6dc953df424 her dizideki her nesnenin (bir dizi için, Ne yapmak istediğim

: Bir doğrusal düzen), Nesne sayısı ve nesneyi temsil eden bir resim Görünümü ile bir metin Görünümü eklemek için. Her şeyi sıralamak nasıl

Sonraki, bunu bence gerçekten önemli değil, ama her şeyi anlamak istiyorsanız bir görünüm vermek gerekecek bulacaksınız: p

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_optimisation); 

    LinearLayout caserne1 = (LinearLayout) findViewById(R.id.caserne1); 
    //...Doing this for the 5 others... 

    Intent intent = getIntent(); 


    //Instanciation of my object 
    OptiClashOfClans o = new OptiClashOfClans(); 

    //In fact, the number of linearLayout i'll have to work with 
    o.setNbCasernes(this.nbCaserne); 

    if (this.nbBarbares > 0) 
     o.ajouterFormation(1, this.nbBarbares); 
    //...Adding each object in on array...  
    o.setAFormer(o.triTroupe()); 

    //And finally here i'll put each object in the good array 
    o.orgaCaserne(o); 

Şimdi gitmek benim sorun, bu kod kısmı hemen yanında daha önce koymak birine burada, ben her dizide sonunda burada

for (int cptCaserne = 0; cptCaserne < this.nbCaserne; cptCaserne++) { 


     // Here I pick up the array of object I'll work with 
     Caserne casTmp = o.getCaserneNum(cptCaserne); 


     // Here I pick every object which are in the previous array 
     ArrayList<Troupe> enFormTmp = new ArrayList<Troupe>(); 
     enFormTmp = casTmp.getEnFormation(); 

     // To count where I am in the array of object 
     int cptAFormer = 0;   

     //To know if the next object is different from the one I'm working with 
     Troupe troupTmp = enFormTmp.get(cptAFormer); 

     int cptTroupTmp = 0; 

     //For the object t in the array of object 
     for (Troupe t : enFormTmp) { 
      cptTroupTmp = 0; 

      //While the object is the same from the one we're working with 
      while (!troupTmp.equals(t)) { 
       //Incrementing the previous counter 
       cptTroupTmp++; 
       cptAFormer++; 
      } 

Ve aynı nesnenin numarasını almak nasıl gerçekten bilmiyorum nasıl yapmak için:

  ImageView iView = new ImageView(Optimisation.this); 

      //To know which background i'll add to the image view 
      //I'll do this for each different object 
      if (t.getNom().equals("Barbare")) 
       iView.setImageResource(R.drawable.barbare); 
      //... 

      //The text view with the number of object I found 
      TextView tView = new TextView(Optimisation.this); 
      tView.setText("" + cptTroupTmp); 


      //And now it's here where I want to add the different views 
      switch (cptCaserne) { 
      case 0: 
       caserne1.addView(tView); 
       caserne1.addView(iView); 
      case 1: 
       caserne2.addView(tView); 
       caserne1.addView(iView); 
      case 2: 
       caserne3.addView(tView); 
       caserne1.addView(iView); 
      case 3: 
       caserne4.addView(tView); 
       caserne1.addView(iView); 

      } 
      troupTmp = enFormTmp.get(cptAFormer); 
     } 

    } 

Bu kodla, bu etkinliğe devam ederken çılgın bir siyah ekranım var. İşte https://gyazo.com/31b16982ce30b66391bafdd2cd4d86fc

Ben LayoutInflater ile ilgisi bazı şeyler buldum ... Ben objet sayısı ile ve nesnenin yeşil imageview kırmızı TextView'un içinde yapmak istediğim şey ama yok bunlarla başarılı oldum ... Bana yardım ederseniz çok teşekkür ederim.

PS: hatalar için üzgünüm, ben bir sürü düşünüyorum, ama bunun gibi uzun görevde, okulum ingilizce tekrar teşekkürler ^^ çok etkili değildir :) Ben eğer

cevap

1

beni düzelt m yanlış. Ama anladığım kadarıyla, burada https://gyazo.com/31b16982ce30b66391bafdd2cd4d86fc'da neyin gösterildiğini başarmanız gerekiyor?

Kodunuza temel olarak, yalnızca TextView ve Image View'u eklemeden önce her LinearLayout'ta yatay bir yönlendirmeye sahip ek bir LinearLayout eklemeniz gerekir.

LinearLayout innerLayout = new LinearLayout(Optimisation.this) 
innerLayout.setOrientation(LinearLayout.HORIZONTAL); 
ImageView iView = new ImageView(Optimisation.this); 

     //To know which background i'll add to the image view 
     //I'll do this for each different object 
     if (t.getNom().equals("Barbare")) 
      iView.setImageResource(R.drawable.barbare); 
     //... 

     //The text view with the number of object I found 
     TextView tView = new TextView(Optimisation.this); 
     tView.setText("" + cptTroupTmp); 


     innerLayout.addView(tView); 
     innerLayout.addView(iView); 

     //And now it's here where I want to add the different views 
     switch (cptCaserne) { 
     case 0: 
      caserne1.addView(innerLayout); 
     case 1: 
      caserne2.addView(innerLayout); 
     case 2: 
      caserne3.addView(innerLayout); 
     case 3: 
      caserne4.addView(innerLayout); 

     } 

Ben innerLayout ekliyorum Düzen yanlışsa ayarlamak için çekinmeyin:

İşte kodu kullanarak bir örnek. Ama temel olarak, bu fikir.

+0

with "Optimisation.this" eclypse, Optimization'ın bir türe çözülemeyeceğini söylese de, hala çalışmıyor ama bana çok teşekkür edeceğim bir fikir verdiniz :) – Kokodelo

+1

new LinearLayout (Optimisiation.this) bununla değiştirin: yeni LinearLayout (this) – ljpv14

+0

Bu etkinliğe gitmek için düğmeye bastığımda hala siyah bir ekranım var ve o zaman uygulamanın yanıt vermediğini söylüyor ... Ve bu sizin cevabınız ile olabilir. Kodumda yanlış olan bir şeyden mi geldin? (her şeyi sıralayana değil, çok fazla test yaptım ve işe yarıyor ama en son üç taneden biri ile çalışıyorum.) – Kokodelo

İlgili konular