我遇到了运行时错误异常:
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/