首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClassCastException解释

ClassCastException解释
EN

Stack Overflow用户
提问于 2011-08-31 16:29:16
回答 3查看 120关注 0票数 0

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

注意:我有一个类似于问题的布局类型,但只有一个TextView。

solution link here

我的代码如下:

代码语言:javascript
复制
    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);
 }

所以根据他的解决方案,如果我把这个改为

代码语言:javascript
复制
String info = ((TextView) v.findViewById(R.id.search_device_id)).getText().toString();

它解决了我的ClassCastException问题。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-31 16:35:42

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

这不是TextView本身,您必须找到它里面的TextView。

票数 0
EN

Stack Overflow用户

发布于 2011-08-31 16:33:12

您可以从阅读以下内容开始:http://developer.android.com/reference/android/widget/LinearLayout.html

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

很明显,您知道您的textView是R.id.search_device_id,所以您应该理解它包含在布局中,它是整个单元格,碰巧是'v‘。

票数 0
EN

Stack Overflow用户

发布于 2011-08-31 16:38:51

它仅仅意味着listitem是一个LinearLayoutTextView包含在其中。onItemClick获取项根,而不是直接获取其内容。就像这样

代码语言:javascript
复制
<LinearLayout......>
    <TextView........../>
    ............
</LinearLayout>

因此,当您收到对项目的单击时,条目根,即LinearLayout将在onItemClick中传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7260278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档