我使用的是Android Universal Image Loader。
在所有示例代码中,视图都是通过XML创建的。我需要通过Java创建我的视图(不膨胀)。我试图将View视图转换为PhotoDisplayView对象,并调用.test()。但是找不到.test()。
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而不是View,我可以访问该方法
答案 0 :(得分:3)
我认为这需要更多的括号,以确保您按正确的顺序做事。 r.table(...).update({"NEWCOL": null})
将被解释为"调用(PhotoDisplayView)view.test();
,然后将结果转换为View.test()
。相反,试试这个:
PhotoDisplayView
修改强>
好吧,另一个问题是您的// Should work
holder.imageView = ((PhotoDisplayView)view).test();
方法是test()
类型。如果要将其分配给void
,则需要确保它具有返回值。
答案 1 :(得分:-2)
我认为您投射到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();
}
}