1

このコードで

            final ListView lw   =   (ListView) findViewById( R.id.book_list );
        lw.setVisibility(View.VISIBLE);

        ListView listBookView   =   (ListView) findViewById( R.id.book_list );
        ArrayList<HashMap<String, Object>> my_list  = new ArrayList<HashMap<String, Object>>();

        for ( int x=0; x< book_list.size(); x++)
        {
            String[] valori_book    =   book_list.get( x ).getObjVars();
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("book", valori_book[ 0 ]);
            map.put("descr", valori_book[ 1 ] );

            my_list.add(map);
        }
        // ...
        SimpleAdapter showMenu = new SimpleAdapter(this, my_list, R.layout.activity_book_booklistmask,
                    new String[] { "book" , "descr" }, new int[] {R.id.nome_quaderno, R.id.descrizione_quaderno});
        listBookView.setAdapter(showMenu);

java.lang.IllegalStateException:android.widget.ListViewは、このSimpleAdapterによってバインドできるビューではありません

logcatは私のプロジェクトのエラーの行を書き込まないので、どこをチェックするのかわかりません:/

E/AndroidRuntime(  904): java.lang.IllegalStateException: android.widget.ListView is not a  view that can be bounds by this SimpleAdapter
E/AndroidRuntime(  904):        at android.widget.SimpleAdapter.bindView(SimpleAdapter.java:195)
E/AndroidRuntime(  904):        at android.widget.SimpleAdapter.createViewFromResource(SimpleAdapter.java:126)
E/AndroidRuntime(  904):        at android.widget.SimpleAdapter.getView(SimpleAdapter.java:114)
E/AndroidRuntime(  904):        at android.widget.AbsListView.obtainView(AbsListView.java:1315)
E/AndroidRuntime(  904):        at android.widget.ListView.makeAndAddView(ListView.java:1727)
E/AndroidRuntime(  904):        at android.widget.ListView.fillDown(ListView.java:652)
E/AndroidRuntime(  904):        at android.widget.ListView.fillFromTop(ListView.java:709)
E/AndroidRuntime(  904):        at android.widget.ListView.layoutChildren(ListView.java:1580)
E/AndroidRuntime(  904):        at android.widget.AbsListView.onLayout(AbsListView.java:1147)
E/AndroidRuntime(  904):        at android.view.View.layout(View.java:7035)
E/AndroidRuntime(  904):        at android.widget.RelativeLayout.onLayout(RelativeLayout.java:909)
E/AndroidRuntime(  904):        at android.view.View.layout(View.java:7035)
E/AndroidRuntime(  904):        at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
E/AndroidRuntime(  904):        at android.view.View.layout(View.java:7035)
E/AndroidRuntime(  904):        at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
E/AndroidRuntime(  904):        at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
E/AndroidRuntime(  904):        at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
E/AndroidRuntime(  904):        at android.view.View.layout(View.java:7035)
E/AndroidRuntime(  904):        at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
E/AndroidRuntime(  904):        at android.view.View.layout(View.java:7035)
E/AndroidRuntime(  904):        at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
E/AndroidRuntime(  904):        at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
E/AndroidRuntime(  904):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  904):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  904):        at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(  904):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  904):        at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  904):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(  904):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime(  904):        at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

1

SimpleAdapterのドキュメントから

Checkable(CheckBoxなど)を実装するビュー。期待されるバインド値はブール値です。

TextView。期待されるバインド値は文字列であり、setViewText(TextView、String)が呼び出されます。

ImageView。予期されるバインド値はリソースIDまたは文字列であり、setViewImage(ImageView、int)またはsetViewImage(ImageView、String)が呼び出されます。

マップされたオブジェクトとしてオブジェクトを渡すことは、SimpleAdapterと互換性がないように見えます。オブジェクトタイプを変更するか、カスタムアダプタを作成します(後でお勧めします)

于 2011-08-05T18:23:39.907 に答える