在Java静态类上找不到方法
我使用的是Android通用图像加载器 在所有示例代码中,视图都是通过XML创建的。我需要通过Java创建视图(无膨胀)。我尝试将视图转换为PhotoDisplayView对象,并调用.test()。但是找不到.test()在Java静态类上找不到方法,java,android,static-methods,Java,Android,Static Methods,我使用的是Android通用图像加载器 在所有示例代码中,视图都是通过XML创建的。我需要通过Java创建视图(无膨胀)。我尝试将视图转换为PhotoDisplayView对象,并调用.test()。但是找不到.test() public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder holder; View vie
public View getView(int position, View convertView, ViewGroup parent)
{
final ViewHolder holder;
View view = convertView;
if (view == null) {
view = new PhotoDisplayView(parent.getContext());
holder = new ViewHolder();
assert view != null;
holder.imageView = (PhotoDisplayView)view.test();//test() CANNOT BE FOUND
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
}
这是我的静态课程
static class PhotoDisplayView extends FrameLayout
{
public ImageView imageView;
public ProgressBar progressBar;
public PhotoDisplayView(Context context)
{
super(context);
imageView = new ImageView(context);
progressBar = new ProgressBar(context);
}
public void test()
{
Log.d("TEST","TEST");
}
}
我不明白为什么将其转换为PhotoDisplayView对象不会让我访问其功能?我拿了一个视图对象,并将其转换为它的子类版本。为什么找不到方法呢
注意:如果我将对象声明为PhotoDisplayView而不是视图,我确实可以访问该方法我认为这只需要更多的括号来确保您按照正确的顺序进行操作<代码>(PhotoDisplayView)视图。测试()将被解释为“调用
View.test()
,然后将结果强制转换为PhotoDisplayView
。请尝试以下操作:
// Should work
holder.imageView = ((PhotoDisplayView)view).test();
编辑:
另一个问题是,您的
test()
方法是typevoid
。如果要将其分配给holder.imageView
,则需要确保它有一个返回值。我认为您强制转换为PhotoDisplayView,但您将此对象保存为ViewHolder,而不是PhotoDisplayView
你可以这样做:
public View getView(int position, View convertView, ViewGroup parent)
{
final ViewHolder holder;
View view = convertView;
if (view == null) {
view = new PhotoDisplayView(parent.getContext());
holder = new ViewHolder();
assert view != null;
PhotoDisplayView photodisplay=view.test();
photodisplay.photodisplaymethods();
holder.imageView = photodisplay;
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
}Ya我不需要让这个方法工作,只要找到它就行了哈哈。@Aggressor一开始可能是这样的。但是编译器基本上是这样做的:1.在
视图
对象上调用test()
。2.将结果强制转换到PhotoDisplayView
。因为视图
没有测试()
method,它在第1步出错。添加括号使它首先强制转换类,然后运行该方法。因此我正在强制转换结果。明白了,这就清除了它。来自C#、Obj-C和Swift,我与Java玩得很开心哈哈哈