这是我的Pageradapter
:
private class MyAdapter extends PagerAdapter {
Context context;
public MyAdapter(Context context) {
super();
this.context = context;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ModelObject modelObject = ModelObject.values()[position];
LayoutInflater inflater = LayoutInflater.from(context);
ViewGroup layout = (ViewGroup) inflater.inflate(modelObject.getLayoutResId(), container, false);
TextView bottomTitle = (TextView)layout.findViewById(R.id.bottom_title);
ImageView topImageView =(ImageView) layout.findViewById(R.id.top_image_view);
TextView topTitleTextview=(TextView)layout.findViewById(R.id.top_title_text_view);
TextView bottomDescriptionTextView=(TextView)layout.findViewById(R.id.bottom_description_textview);
bottomTitle.setText(pointsHelpItemDetailViewModel.getHelpItem().subtitle);
int resId = getContext().getResources().getIdentifier(pointsHelpItemDetailViewModel.getHelpItem().image, "drawable", context.getPackageName());
topImageView.setBackgroundResource(resId);
topTitleTextview.setText(pointsHelpItemDetailViewModel.getHelpItem().subtitle);
bottomDescriptionTextView.setText(pointsHelpItemDetailViewModel.getHelpItem().content);
container.addView(layout);
return layout;
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
collection.removeView((View) view);
}
@Override
public int getCount() {
return ModelObject.values().length;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public CharSequence getPageTitle(int position) {
ModelObject customPagerEnum = ModelObject.values()[position];
return context.getString(customPagerEnum.getTitleResId());
}
}
这是我的ModelObject
public enum ModelObject {
RED(R.color.tesco_red, R.layout.point_help_image_view),
BLUE(R.color.tesco_blue, R.layout.point_help_decription_view);
private int mTitleResId;
private int mLayoutResId;
ModelObject(int titleResId, int layoutResId) {
mTitleResId = titleResId;
mLayoutResId = layoutResId;
}
public int getTitleResId() {
return mTitleResId;
}
public int getLayoutResId() {
return mLayoutResId;
}
}
我在第一个布局中添加了两个布局点_ help_image_view
,point_help_decription_view
,我有一个ImageView
和一个TextView
,在第二个布局中,我想访问两个文本视图。
我正在尝试使用给定的代码进行访问,但是当我尝试setText时,我在null对象引用上遇到了异常java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setBackgroundResource(int)'
。请帮助我如何访问页面适配器中的视图。
答案 0 :(得分:0)
尝试一下
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, final int position) {
ModelObject modelObject = ModelObject.values()[position];
View itemView = LayoutInflater.from(container.getContext()).inflate(modelObject.getLayoutResId(), container, false);
TextView bottomTitle = (TextView) itemView.findViewById(R.id.bottom_title);
bottomTitle.setText("MARSH");
return itemView;
}