Autore Topic: ListView  (Letto 666 volte)

Offline moskino11

  • Utente normale
  • ***
  • Post: 180
  • Respect: 0
    • Mostra profilo
ListView
« il: 21 Marzo 2013, 18:17:16 CET »
0
Ciao amici, sto cercando di utilizzare le ListView, e in particolari modo voglio realizzare una ListView contenente delle stringhe che ho dichiarato nel file string.xml ma non mi funziona
Il logcat è il seguente:
03-21 17:37:22.095: E/AndroidRuntime(502): FATAL EXCEPTION: main
03-21 17:37:22.095: E/AndroidRuntime(502): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.AbsListView.obtainView(AbsListView.java:1315)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.ListView.makeAndAddView(ListView.java:1727)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.ListView.fillDown(ListView.java:652)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.ListView.fillFromTop(ListView.java:709)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.ListView.layoutChildren(ListView.java:1580)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.AbsListView.onLayout(AbsListView.java:1147)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.view.View.layout(View.java:7035)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.view.View.layout(View.java:7035)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.view.View.layout(View.java:7035)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.view.View.layout(View.java:7035)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.os.Looper.loop(Looper.java:123)
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.app.ActivityThread.main(ActivityThread.java:4627)
03-21 17:37:22.095: E/AndroidRuntime(502):    at java.lang.reflect.Method.invokeNative(Native Method)
03-21 17:37:22.095: E/AndroidRuntime(502):    at java.lang.reflect.Method.invoke(Method.java:521)
03-21 17:37:22.095: E/AndroidRuntime(502):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-21 17:37:22.095: E/AndroidRuntime(502):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-21 17:37:22.095: E/AndroidRuntime(502):    at dalvik.system.NativeStart.main(Native Method)
03-21 17:37:22.095: E/AndroidRuntime(502): Caused by: java.lang.ClassCastException: android.widget.LinearLayout
03-21 17:37:22.095: E/AndroidRuntime(502):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:340)
03-21 17:37:22.095: E/AndroidRuntime(502):    ... 26 more


Il mio codice è il seguente:
Codice (Java): [Seleziona]
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.view.Menu;
import android.widget.ArrayAdapter;

public class ListApp extends ListActivity {

    private List<String> arrayListStatico = new ArrayList<String>();
        private ArrayAdapter<String> adapter;

        @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        String[] stringhe = getResources().getStringArray(R.array.arrayEsempio);
                Collections.addAll(arrayListStatico, stringhe);
                adapter = new ArrayAdapter<String>(this, R.layout.row, arrayListStatico);
                setListAdapter(adapter);
                registerForContextMenu(getListView());  
    }

   
}


il file stringa.xml
Codice (XML): [Seleziona]
<resources>

    <string name="app_name">ListApp</string>
    <string name="hello_world">Hello world!</string>
    <string name="menu_settings">Settings</string>
    <string name="title_activity_list_app">ListApp</string>
   
    <string-array name="arrayEsempio">
        <item >Prima</item>
        <item >Seconda</item>
        <item >Terza</item>
    </string-array>

</resources>


row.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent" >

        <TextView
           android:id="@+id/textView1"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="TextView" />

    </LinearLayout>


non riesco a capire quale sia l'errore qualcuno mi può aiutare gentilmente?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:ListView
« Risposta #1 il: 21 Marzo 2013, 19:01:11 CET »
+1
Stai sbagliando il costruttore.
Stai usando )]questo, che come secondo argomento vuole una TextView, tu invece gli passi un layout.
Dovresti usare )]questo invece, specificando sia il layout, sia l'id della TextView.
Infatti l'errore é ben chiaro
Citazione
03-21 17:37:22.095: E/AndroidRuntime(502): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
ti dice che devi passargli una TextView.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline moskino11

  • Utente normale
  • ***
  • Post: 180
  • Respect: 0
    • Mostra profilo
Re:ListView
« Risposta #2 il: 22 Marzo 2013, 01:50:46 CET »
0
grazie mille blackgin, ho corretto in questo modo:

Codice (Java): [Seleziona]
adapter = new ArrayAdapter<String>(this, R.layout.row, R.id.row, arrayListStatico);
e adesso funziona!!!!
grazie