2010-11-21 11 views
0

Bir etkinlikte, A ve B'de iki spiner var. Her bir spiker, bir XML dosyasından bir veya daha fazla dizi dizisine bağlı bir arrayAdapter kullanır. B değerleri A.Her bir sınıf aynı verilere başvuruda bulunduğunda sınıflar arasında gevşek kuplaj nasıl korunur?

B kullanan bazı diziler için bir referans seçildiğinde ne bağlı doldurulur çünkü birden gerekir:

<!-- Used in spinner mCcColor --> 
<string-array name="component0_color"> 
    <item>Chocolate</item> 
    <item>Yellow</item> 
    <item>Strawberry</item> 
</string-array> 

<!-- Used in spinner mCcColor --> 
<string-array name="component1_color"> 
    <item>Blueberry</item> 
    <item>Chocolate</item> 
    <item>Dark Chocolate</item> 
</string-array> 

İleri, bir tuval temelde bir özel görünüm sınıf yarattı Ben bitmapler (png) çiziyorum. Spinner A bitmap ve B spin rengi. Bu nedenle, bu görünümde neyin çizileceğini belirlemek için, kullanıcının A ve B numaralı iş makinelerinde ne seçtiğini bilmem gerek.

Her iki iplikçi A ve iplikçi B'de seçilen konumu geçmek oldukça kolaydır. bir örnektir.

ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this, R.array.cc_components, android.R.layout.simple_spinner_item); 
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
mCcComponent.setAdapter(adapter1); 
mCcComponent.setOnItemSelectedListener(new OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    //Call the method of the custom view that draws to the canvas 
    mSelectedComponent = position; 
    myCustomView.foo(mSelectedComponent, mSelectedCompColor); 
    myCustomView.postInvalidate(); 
}); 

Sahip olduğum sorun, özel görünümün içine girdiğim iplikçilerin dizin numaralarını bağlıyor. Geçtiğim konum değerlerine bağlı olarak bir grup anahtar kutusu boku yapabilirim, ancak bu gereksiz görünüyor çünkü her bir durum, döndürücü ile ilişkili olan sadece birkaç statik değerdir. Ayrıca, görüntü sınıfımı arayan etkinliği ile sıkıca eşleştireceğim.

XML'de daha karmaşık bir dizi oluşturmak ve her dizge için dizeleri ve 3 tamsayı değerleri içermesi çok daha kolay ve daha temiz gibi görünüyor.

Sıkıştırma düzenleyicim, görüntü veya özel görünümün içindeki renkler için baş ağrılarına neden olmadan karmaşık bir diziyi kullanmanın bir yolu var mı? Buna yaklaşmanın daha iyi bir yolu var mı? Birisi bana bazı konulara veya bağlantılara işaret edebilir mi veya birkaç satırlık kod gönderebilir mi?

Herkese teşekkürler! Aksi yüzden,

<!-- Used in spinner mCcColor --> 
<array name="component1_color"> 
    <item>Blueberry</item> 
    <red>81</red> 
    <green>27</green> 
    <blue>21</blue> 
    <item>Chocolate</item> 
    <red>45</red> 
    <green>21</green> 
    <blue>6</blue> 
</array> 

cevap

1

Neden bunların her biri için bir sınıf oluşturmak değil: İşte

bu çözmek için daha temiz bir yol gibi görünüyor Açıklamaya çalıştığım şey görsel bir temsilidir, dizi ile doğrudan anlaşma, ancak işlevler üzerinden gitmek?

Arzu ederseniz dinleyicileriniz olabilir, böylece bir değişim olduğunda iki eğiriciye haber verilecek ve uyum sağlayabilecektir.

Sıkıştırma hakkında endişeli iseniz, paylaşılan diziyi içine almak bu zorluğu ortadan kaldıracaktır.

+0

Hmm. Bunu yapabilirim, bir süreliğine üzerine erteleyeceğim. Ancak, nasıl yapılacağını anlayabiliyorsam, 2 sınıfla birlikte kullanılabilecek verileri yapılandırmak için XML kullanmanın hala yararlı olabileceğini düşünüyorum. – user432209

+0

Sınıflarınız XML dosyalarından okuyacaktır. Ayrıca, biçimi değiştirmek istiyorsanız, belki de bir web servisine veya veritabanına giderseniz, uygulamanın geri kalanı bunu bilmez ve umursamaz. –

+0

Şimdiye kadar bu iyi çalışıyor gibi görünüyor. Ne yazık ki, XML'in ne kadar basit olduğunu göz önünde bulundurarak, çok küçük bir kazanç için çok fazla iş olan XML'i seri hale getirmem gerekiyor gibi görünüyor. Uzun vadede çabaya değeceğinden emin değilim. Tekrar teşekkürler! – user432209

İlgili konular