Android ClassCastException解释

Android ClassCastException解释,android,Android,您好,我在下面的代码中遇到了一点问题,我从这个链接中的勾选答案中得到了一个解决方案。我想知道为什么 注意:我的布局与问题中类似,但只有一个文本视图 我的代码如下: public void onItemClick(AdapterView<?> av, View v, int position, long id) { blueadapter.cancelDiscovery(); String info = ((TextView) v).getText(

您好,我在下面的代码中遇到了一点问题,我从这个链接中的勾选答案中得到了一个解决方案。我想知道为什么

注意:我的布局与问题中类似,但只有一个文本视图

我的代码如下:

    public void onItemClick(AdapterView<?> av, View v, int position, long id) {
        blueadapter.cancelDiscovery();

    String info = ((TextView) v).getText().toString(); //classcastException here
    String Bluetooth_address = info.substring(info.length()-17);
 }
它解决了我的ClassCastException问题


现在,请有人给我解释一下或给我指出正确的方向,他在回答中的意思是什么“你收到的是作为参数v的整个线性布局。你应该尝试v.findViewById(),然后使用这个文本视图。”很好,它解决了我的问题,但我想知道为什么我必须这样做?。。我以前处理过ListView,但我没有遇到过这种情况,所以对我来说有点奇怪。谢谢。

您可以从阅读以下内容开始:

然后查看您为项目委托声明的布局


显然,您知道您的textView是R.id.search\u device\u id,因此您应该了解它包含在一个布局中,该布局是整个单元格,恰好是“v”

您得到的视图v是包含textView(可能还有其他视图)的对象的整个布局


它不是文本视图本身,您必须找到它里面的文本视图。

它只是意味着列表项是一个
线性布局
,并且
文本视图
包含在其中。
onItemClick
直接获取项目根,而不是其内容。像这样的

<LinearLayout......>
    <TextView........../>
    ............
</LinearLayout>

............

因此,当您收到对项目的单击时,项目根目录,即
LinearLayout
会在
onItemClick

中传递,您的列表项目是否有类似的布局?
<LinearLayout......>
    <TextView........../>
    ............
</LinearLayout>