java - 将 ListView 的选定项作为字符串或 TextView 获取时出现 ClassCastException

标签 java android

我遇到了运行时错误异常:

java.lang.ClassCastException: android.widget.TwoLineListItem cannot be cast to android.widget.TextView

我的 Activity 扩展了 Activity NOT ListActivity,这是我的布局构造:

<LinearLayout ...> <ListView ...></ListView> </LinearLayout>

Java:

   ListView lv1 = (ListView) findViewById(R.id.listViewXMLdata);
    ArrayAdapter<String> arrAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_2,
        android.R.id.text2, getResources().getStringArray(R.array.countries));

    lv1.setAdapter(arrAdapter);

    lv1.setOnItemClickListener(new OnItemClickListener() {          
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {              
            lView.getItemAtPosition(position);

            String itemSelected = ((TextView) view).getText().toString();
            Toast.makeText(getApplicationContext(), "Clicked Position Number " + position + ": " + itemSelected ,
                    Toast.LENGTH_SHORT)
                    .show();


        }
    });

我唯一关心的只是获取列表中的字符串(所选项目)。

注意 1:我没有在任何数据库上工作。

注意 2:我已经尝试将其转换为 CharSequence itemSelected = ((TextView) view).getText().toString() 但仍然出现运行时错误。

仅当我开始选择列表中的项目时才会出现运行时错误。

最佳答案

android.R.layout.simple_list_item_2 的根是一个 TwoLineListItem 小部件,它有两个 child (两个 TextViews),两行文本。将此小部件转换为 TextView 将失败,并出现您在 logcat 中看到的异常。使用 findViewById 搜索所需的 TextView:

String itemSelected = ((TextView) view.findViewById(android.R.id.text2)).getText().toString();

关于java - 将 ListView 的选定项作为字符串或 TextView 获取时出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12715456/

相关文章:

java - Android 联系人列表选择器

Android 如何安装较旧的 API 版本?

java - 有没有办法重载 JSONArray 使其表现得像循环中的常规列表?

java - Android Studio 更新到 2.2.2 时无法识别应用程序名称

java - 通过socket将asn1数据从客户端发送到服务器

java - Bigdecimal 转字符串

java - 尝试将字符串写入 Android 应用程序上的文件,打开时崩溃

Java : Running shell script in background

android - 收听 Intent ACTION_VIEW 的 Activity

java - 在 Intent 中发送信息并使用 FLAG_ACTIVITY_CLEAR_TOP