2 sinat 25136209 sinat_25136209 于 2016.04.10 17:10 提问

菜鸟求解问题,这里为什要加括号??

listView=(ListView)this.findViewById(R.id.lisView);

就是为什么要加一个(ListView)??

在前面定义过一个私有方法

private ListView listView;

7个回答

qq_31565303
qq_31565303   2016.04.10 17:27
已采纳

这个是强转的,R.id.# 的返回值都是int类型的,需要强制转换成listview

sinat_25136209
sinat_25136209 谢谢,明白啦
一年多之前 回复
github_34226737
github_34226737   2016.04.10 17:26

不要给片段,起码发个上下衔接的代码块。你这句private ListView listView;难道不是声明的ListView对象?哪有个私有方法?

sinat_25136209
sinat_25136209   2016.04.10 17:28

图片说明

a172586418
a172586418   2016.04.10 21:10

个人理解,首先实现一个接口或者一个父类的有很多,一个参数的传递,我采用接口或者父类,我只能调用接口中的方法或者调用父类里面的共有方法,我不能调用具体派生类正方法,那么如果我需要调用某个派生类的方法,我应该怎么办呢?
我需要将接口或者父类转为具体的派生类,这样就可以调用派生类中具体的方法或者字段,但是这里需要注意的时候,强制转换可能为空哟。

例如:人类和鸟类都继承了动物类,我想调用人类中的useTool方法,如果你将一个人类转为一个鸟类,这个肯定是不行的。所以返回一个Null。所以小心空指针异常。

o527883184
o527883184   2016.04.10 23:32

代码从右往左看,首先穿入一个ID,然后通过ID找控件,最后将控件强转为需要的类型。
强转的原理相当于将一个基类(人)转为一个派生类(男生或女人)

cyxevil
cyxevil   2016.04.11 13:45

findviewbyid 返回的是View

cyxevil
cyxevil 回复sinat_bear: ..........
一年多之前 回复
sinat_25136209
sinat_25136209 谢谢,美女O(∩_∩)O
一年多之前 回复
xueshanhaizi
xueshanhaizi   2016.04.12 10:16

this.findViewById(R.id.lisView) 这个返回的是View,不是具体的类型,之后强制类型转换到实际的类型

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!