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
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
new LinearLayout (Optimisiation.this) bununla değiştirin: yeni LinearLayout (this) – ljpv14
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