2016-12-10 7 views
1

heute habe ich daran gearbeitet, eine meiner apps zu einem reinen kotlin build als test zu übersetzen. Ich habe derzeit Probleme mit Array-Adaptern und bekomme diesen Fehler.Anko DSL mit ArrayAdapter

File from xml type layout resource ID #0x7f0c000a 

Dies ist meine Aktivität, die den Fehler hat.

class KotlinTest : Activity() { 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 

     val arr = Array(5, Int::toString) 

     verticalLayout { 


      id = R.id.test_text_layout 

      textView { 
       width = matchParent 
       height = matchParent 
       id = R.id.test_text_item 
      } 


      listView { 
       id = R.id.test_text_view 
      } 
     } 

     val cardAdapter: ArrayAdapter<String>? = ArrayAdapter(ctx, R.id.test_text_layout, arr) 

     val tempView: ListView = findViewById(R.id.test_text_view) as ListView 

     tempView.adapter = cardAdapter 

     cardAdapter?.notifyDataSetChanged() 

    } 

} 

Und das ist die Datei IDS.XML.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <item name="test_text_item" type="id"/> 
    <item name="test_text_view" type="id"/> 
    <item name="test_text_layout" type="id"/> 

</resources> 

Ich habe ein paar Dinge ausprobiert, aber kein Glück, so würde jede Anleitung geschätzt werden. Ich nehme an, ich vermisse nur etwas Dummes.

+0

In welcher Zeile tritt der Fehler erscheinen verlängern? – voddan

+0

@voddan Ich bekomme den Fehler erst, wenn 'tempView.adapter = cardAdapter' ist, wenn ich annehme, dass es tatsächlich versucht, das ArrayAdapter zu erstellen und das Layout aufzublasen, aber ich könnte falsch liegen. Wenn ich es mit dieser Zeile austrage und die darunter liegende auskommentiert, bekomme ich nur eine leere Aktivität. – thechucklingatom

Antwort

2

Entfernen Sie diese Zeile <item name="test_text_layout" type="id"/>

Datei in res/layout dir erstellen, es test_text_layout.xml rufen und fügen Sie folgenden Inhalt

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

Im Code der Tätigkeit

val cardAdapter = ArrayAdapter(ctx, R.layout.test_text_layout, arr) 

Ursache des Problems - Sie bestanden falsch Parameter. Von documentation

Ressource int: Die Ressourcen-ID für eine Layout-Datei eine Textview enthält Ansichten zu verwenden, wenn instanziieren.

Wenn Sie vollständig loszuwerden xml erhalten möchten, dann müssen Sie ArrayAdapter

+0

Und dann gibt es keine Möglichkeit, das mit dem von Anko generierten benutzerdefinierten Layout zu verknüpfen. Das nahm ich an, je mehr ich darüber nachdachte. Es sieht so aus, als ob ich für die Anwendung, die ich anstrebe, den ArrayAdapter erweitern muss. Danke, dass Sie das bestätigt haben. – thechucklingatom

+0

@thechucklingatom Sie sind willkommen, ping mich im Chat, wenn Sie Hilfe benötigen http://chat.stackoverflow.com/rooms/26424/iosandroidchaosoverflow –