Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Android Studio Fehlermeldung: Expected resource of type layout
 
Problem:
Beim Erstellen eines Adapters für eine Listview, wird die Listview als Resource im ArrayAdapter nicht erkannt.

ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, R.id.listview_Contacts , arrayList_Contacts);

 
Im Java Code (Android Studio)

 
Fehlermeldung:

Expected resource of type layout less... (Alt+T)
This inspection looks at Android API calls that have been annotated with various support annotations (such as RequiresPermission or UiThread) and flags any calls that are not using the API correctly as specified by the annotations.

Examples of errors flagged by this inspection:
  • Passing the wrong type of resource integer (such as R.string) to an API that expects a different type (such as R.dimen).
  • Forgetting to invoke the overridden method (via super) in methods that require it
  • Calling a method that requires a permission without having declared that permission in the manifest
  • Passing a resource color reference to a method which expects an RGB integer value.

...and many more.


 
 
Die ListView ist festgelegt in einer Fragment.xml als Unterseite, welche dynamisch in eine TabActivty geladen wird.

 
Die Listview als Resource definiert: android:id="@+id/listview_Contacts"

<RelativeLayout 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"
tools:context="layout.Contacts"
>

..

<
ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listview_Contacts"
android:layout_below="@+id/btnRead_Contacts"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:choiceMode="singleChoice"/>


</
RelativeLayout>
 

 
 
 
Lösung:
Man muss in ArrayAdapter nicht die ListView als Paramter angeben, sondern eine Resource-Datei mit Zeilenelementen.
Hierzu muss man im Verzeichnis /layout eine neue Layout resource file erstellen

Im Dialog: New Resource File gibt man in File name einen entsprechenden Namen für die Dateielemente an.
Hier wird die Datei mit contact_items bezeichnet. Daraus wird anschliessend eine Datei contact_items.xml erstellt.
In Directory name: wählt man /layout als Verzeichnis, wo die xml Datei gespeichert wird.

 
Die neue Resource Datei erscheint in der Darstellung wie eine Activity, ist aber eine Resource Datei

 
In der Text-Ansicht wird die neue Resource-Datei in xml angezeigt nach dem Schema:
Xml-Header und ein LinearLayout Element.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

</
LinearLayout>
 

 
 
Man muss das Element LinearLayout in ein TextView ändern, damit dieses in einer ListView Liste angezeigt werden kann.

Man muss in der Resourcen-Datei das einzige Unterelement in ein TextView umbenennen.
Dadurch kann es in einer ListView als Zeilenelement dargestellt werden.

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

</
TextView>
 

 
Wenn die xml als Resource Datei in /layout gespeichere ist, dann wird diese auch mit IntellJ im Code zur Auswahl gefunden.
Allerdings unter R.Layout und nicht unter R.id

 
Korrekter java Code
Die Resource wird aus R.Layout ermittelt und nicht über R.id

//< show results >
//txtResult_Contacts.setText(sNodes); //*as text

ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, R.layout.contact_items, arrayList_Contacts);
listView_Contacts.setAdapter(adapter);
//</ show results >

 
 
 
Mobile
»
App Settings als App Preferences speichern und lesen
»
Android Settings zu einem App Project zufügen
»
Android Code: Kontakte anfügen mit Person, Email, Telefon mit Batch Operationen
»
Android Studio: Kontakt anfügen mit Hilfe von Android Intent
»
Android Code: Automatisch eine Telefon-Nummer wählen
»
Android App Code: Start Stop von Wlan mit Java Code
»
Android App Code: App soll Wifi anschalten, Intent
»
Android: StartActivity und Intent wie Makros für Apps
»
Android Code: Android Kontakte lesen und in eine ListView speichern
»
Android Java: Angepasste ListView mit eigenem Adapter

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de