我正在使用一些列表项布局,在项目布局中,有一个Viewstub,我想在其中放入一些图像。我没有列表项布局的来源,只知道有一些TextViews和ViewStubs in它
我的目的是首先找到ViewStub并设置我的个人布局并使用它。但是,找不到某些ViewStub。
public class TJAdapter extends CursorAdapter {
....
public void bindView(View view, Context context, Cursor cursor) {
View item = view;
ViewStub contentstub = (ViewStub)item.findViewById(R.id.content_stub);
if (contentstub == null){
LOG.error("TJ,contentstub is null");
} else {
LOG.error("TJ,contentstub is not null");
contentstub.setLayoutResource(R.layout.icon_image);
View iconImage = contentstub.inflate();
}
....
}
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view = mInflater.inflate(R.layout.list_item, parent, false);
bindView(view, context, cursor);
}
}
日志输出如下:
TJ,bindView is called
TJ,contentstub is not null
TJ,bindView is called
TJ,contentstub is null
TJ,bindView is called
TJ,contentstub is not null
TJ,bindView is called
TJ,contentstub is not null
TJ,bindView is called
TJ,contentstub is null
TJ,bindView is called
TJ,contentstub is not null
我花了很多时间在上面,并且不知道为什么会这样。
有人可以帮忙吗?
=============================================== ==================
正如blahdiblah建议的,现在我可以找到iconImage。但我不太明白为什么下一个项目会受到影响,我不能再按下列表项了。它没有回应。
ImageButton iconImage = null;
ViewStub contentstub = (ViewStub)item.findViewById(R.id.content_stub);
if (contentstub == null){
LOG.error("TJ,contentstub is null");
iconImage = (ImageButton)item.findViewById(R.id.icon_image);
} else {
LOG.error("TJ,contentstub is not null");
contentstub.setLayoutResource(R.layout.list_item_icon_image);
View image = contentstub.inflate();
iconImage = (ImageButton)image.findViewById(R.id.icon_image);
}
if (iconImage == null) {
LOG.error("TJ,iconImage is null");
} else {
LOG.error("TJ, iconImage is not null");
}
答案 0 :(得分:0)
当您致电contentstub.inflate();
时,ViewStub的内容会被替换为 ,包括其ID 。当视图在另一次调用bindView
时被回收时,搜索R.id.content_stub
将失败,因为ViewStub已被R.layout.icon_image
替换。
如果layout/icon_image.xml
的搜索未显示任何内容,解决方法是查找您在R.id.content_stub
中设置的ID。
此外,对于它的价值,您不必手动拨打bindView
中的newView
。这应该自动处理。