人造人.显示单击的项目文本.为什么不起作用



问题是获取所选项目包含的内容,但我尝试了很多代码和解决方案仍然不起作用。有人看到问题了吗?

final List list = db.getAllClients();
    final ListView listview = (ListView) findViewById(R.id.listView_ID);
    listview.setClickable(true);
    final ArrayAdapter adapter = new ArrayAdapter(this,
            android.R.layout.simple_list_item_1, list);
    listview.setAdapter(adapter);
    registerForContextMenu(listview);
    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            String selectedText = (String) listview
                    .getItemAtPosition(position);
            Toast.makeText(getApplicationContext(), selectedText,
                    Toast.LENGTH_SHORT);
        }
    });

堆栈跟踪:

01-15 04:37:43.058:我/编舞(2137):跳过了137帧! 应用程序可能在其主线程上做了太多工作。01-15 04:37:44.998:我/编舞(2137):跳过了40帧! 应用程序可能在其主线程上做了太多工作。

01-15 04:37:46.358: W/dalvikvm(2137): threadid=1: thread exiting with uncaught exception (group=0xb3aa9b90)
01-15 04:37:46.418: E/AndroidRuntime(2137): FATAL EXCEPTION: main
01-15 04:37:46.418: E/AndroidRuntime(2137): Process: com.example.assist, PID: 2137
01-15 04:37:46.418: E/AndroidRuntime(2137): java.lang.ClassCastException: com.example.assist.Client cannot be cast to java.lang.String
01-15 04:37:46.418: E/AndroidRuntime(2137):     at com.example.assist.ListActivity$1.onItemClick(ListActivity.java:68)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at android.widget.AdapterView.performItemClick(AdapterView.java:299)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2904)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at android.widget.AbsListView$3.run(AbsListView.java:3638)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at android.os.Handler.handleCallback(Handler.java:733)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at android.os.Handler.dispatchMessage(Handler.java:95)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at android.os.Looper.loop(Looper.java:137)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at android.app.ActivityThread.main(ActivityThread.java:4998)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at java.lang.reflect.Method.invokeNative(Native Method)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at java.lang.reflect.Method.invoke(Method.java:515)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
01-15 04:37:46.418: E/AndroidRuntime(2137):     at dalvik.system.NativeStart.main(Native Method)
01-15 04:42:46.598: I/Process(2137): Sending signal. PID: 2137 SIG: 9

替换这个:

Toast.makeText(getApplicationContext(), selectedText,
                Toast.LENGTH_SHORT);

与下面:

Toast.makeText(getApplicationContext(), selectedText,
                Toast.LENGTH_SHORT).show();

你忘了在吐司中.show()。 就是这样。

阵列适配器具有Client列表,而不是String 。若要获取列表视图中显示的字符串,请更改此字符串

String selectedText = (String) listview
                .getItemAtPosition(position);

到类似的东西

String selectedText = ((Client) listview
                .getItemAtPosition(position)).toString();

并将.show()添加到吐司中,如其他答案中所述。

你错过了.show()

Toast.makeText(getApplicationContext(), selectedText,
                Toast.LENGTH_SHORT).show();

最新更新