Android 为什么我在logcat中的glide返回错误上下文可以为null?
我对使用glide是个新手。我试图从外部存储器加载映像,但在logcat中出错: 我的recycleview适配器使用glide加载映像:Android 为什么我在logcat中的glide返回错误上下文可以为null?,android,android-glide,Android,Android Glide,我对使用glide是个新手。我试图从外部存储器加载映像,但在logcat中出错: 我的recycleview适配器使用glide加载映像: List<TourModel> mItems; private Context mContext; public class ViewHolder extends RecyclerView.ViewHolder{ public ImageView mIvMain,mIvStar1,mIvStar2,mIvSta
List<TourModel> mItems;
private Context mContext;
public class ViewHolder extends RecyclerView.ViewHolder{
public ImageView mIvMain,mIvStar1,mIvStar2,mIvStar3,mIvStar4,mIvStar5;
public TextView mTvTitle,mTvPrice;
public RelativeLayout mLayoutContainer;
public ViewHolder(View mItemView) {
super(mItemView);
mIvMain = (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvMain);
mIvStar1= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar1);
mIvStar2= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar2);
mIvStar3= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar3);
mIvStar4= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar4);
mIvStar5= (ImageView) mItemView.findViewById(R.id.listFragmentMain_IvStar5);
mTvTitle = (TextView) mItemView.findViewById(R.id.listFragmentMain_TvTitle);
mTvPrice = (TextView) mItemView.findViewById(R.id.listFragmentMain_TvPrice);
mLayoutContainer = (RelativeLayout)mItemView.findViewById(R.id.listFragmentMain_LayoutContainer);
}
}
public TourListRvAdapter(Context mContext,List<TourModel> mModel) {
this.mItems = mModel;
this.mContext = mContext;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup mViewGroup, int i) {
View mView = LayoutInflater.from(mViewGroup.getContext()).inflate(R.layout.list_fragment_main, mViewGroup, false);
ViewHolder mViewHold = new ViewHolder(mView);
return mViewHold;
}
@Override
public void onBindViewHolder(ViewHolder mViewHolder, int position) {
final TourModel mItems=this.mItems.get(position);
mViewHolder.mTvTitle.setText(mItems.getTitle());
mViewHolder.mTvPrice.setText(mItems.getPrice() + "");
Glide.with(mContext)
.load(Utility.LoadFileImg(mItems.getImage()))
.into(mViewHolder.mIvMain);
}
列出螨类;
私有上下文;
公共类ViewHolder扩展了RecyclerView.ViewHolder{
公共图像视图mIvMain、mIvStar1、mIvStar2、mIvStar3、mIvStar4、mIvStar5;
公共文本查看mTvTitle、mTvPrice;
公共相对物放置容器;
公共视图持有者(视图视图视图){
超级(mItemView);
mIvMain=(ImageView)mItemView.findViewById(R.id.listFragmentMain_IvMain);
mIvStar1=(ImageView)mItemView.findViewById(R.id.listFragmentMain_IvStar1);
mIvStar2=(ImageView)mItemView.findViewById(R.id.listFragmentMain_IvStar2);
mIvStar3=(ImageView)mItemView.findViewById(R.id.listFragmentMain_IvStar3);
mIvStar4=(ImageView)mItemView.findViewById(R.id.listFragmentMain_IvStar4);
mIvStar5=(ImageView)mItemView.findViewById(R.id.listFragmentMain_IvStar5);
mTvTitle=(TextView)mItemView.findViewById(R.id.listFragmentMain\u TvTitle);
mTvPrice=(TextView)mItemView.findViewById(R.id.listFragmentMain\u TvPrice);
mLayoutContainer=(RelativeLayout)mItemView.findViewById(R.id.listFragmentMain\u LayoutContainer);
}
}
公共TourListRvAdapter(上下文mContext、列表mModel){
this.mItems=mModel;
this.mContext=mContext;
}
@凌驾
公共视图持有者onCreateViewHolder(视图组mViewGroup,int i){
查看mView=LayoutInflater.from(mViewGroup.getContext()).flate(R.layout.list\u fragment\u main,mViewGroup,false);
ViewHolder mViewHold=新的ViewHolder(mView);
返回mViewHold;
}
@凌驾
BindViewHolder上的公共无效(ViewHolder mViewHolder,内部位置){
最终TourModel mItems=this.mItems.get(位置);
mViewHolder.mTvTitle.setText(mItems.getTitle());
mViewHolder.mTvPrice.setText(mItems.getPrice()+);
使用(mContext)滑动
.load(Utility.LoadFileImg(mItems.getImage()))
.into(mViewHolder.mIvMain);
}
还有我的片段活动,它调用recycleview适配器并向其添加变量上下文
Public class TourListFragment extends Fragment {
private static final String TAG = TourListFragment.class.getSimpleName();
private final Context mContext = getActivity();
private int position;
private List<TourModel> mListItem;
private RecyclerView mRecycleView;
private TourListRvAdapter mTouListAdapter;
public static TourListFragment newInstance(int position) {
TourListFragment f = new TourListFragment();
Bundle b = new Bundle();
b.putInt(VariableConstants.POSITION, position);
f.setArguments(b);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
position = getArguments().getInt(VariableConstants.POSITION);
TourDAO mDao = new TourDAO(getContext());
mListItem = mDao.getAllDataReturnModel();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.e(TAG, "" + position);
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
mRecycleView = (RecyclerView) rootView.findViewById(R.id.fragmentMain_RvTourList);
mRecycleView .setHasFixedSize(true); // in content do not change the layout size of the RecyclerView
RecyclerView.LayoutManager mLayoutManager= new LinearLayoutManager(mContext); // use a linear layout manager
mRecycleView.setLayoutManager(mLayoutManager);
mTouListAdapter = new TourListRvAdapter(mContext,mListItem);
mRecycleView.setAdapter(mTouListAdapter);
//iewCompat.setElevation(rootView, 50);
return rootView;
}
}
公共类TourListFragment扩展了片段{
私有静态最终字符串标记=TourListFragment.class.getSimpleName();
私有最终上下文mContext=getActivity();
私人职位;
私人名单;
私人回收视图mRecycleView;
私人旅行社;MTOULISTAPTER;
公共静态TourListFragment newInstance(int位置){
TourListFragment f=新TourListFragment();
Bundle b=新Bundle();
b、 putInt(可变常数.POSITION,POSITION);
f、 设置参数(b);
返回f;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
position=getArguments().getInt(VariableConstants.position);
TourDAO mDao=新的TourDAO(getContext());
mListItem=mDao.getAllDataReturnModel();
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
Log.e(标签“”+位置);
视图根视图=充气机。充气(R.layout.fragment_main,容器,错误);
mRecycleView=(RecyclerView)rootView.findviewbyd(R.id.fragmentMain\u RvTourList);
mRecycleView.setHasFixedSize(true);//在内容中不要更改RecycleView的布局大小
RecyclerView.LayoutManager mLayoutManager=新建LinearLayoutManager(mContext);//使用线性布局管理器
mRecycleView.setLayoutManager(mLayoutManager);
mTouListAdapter=新的TourListRvAdapter(mContext,mListItem);
mRecycleView.setAdapter(mtoulistapter);
//iewCompat.setElevation(根视图,50);
返回rootView;
}
}
我不知道为什么我的变量mContext返回null,有人能帮我吗?请。使用
mViewHolder.itemView.getContext()
,该上下文与您在onCreateViewHolder
中用于膨胀视图的上下文相同,而不是在适配器中保留对的引用mContext
为空,因为您正在初始化成员
private final Context mContext = getActivity();
该片段当时没有经过其生命周期,getActivity()返回null,而不是在适配器中保留对的引用
mContext
为空,因为您正在初始化成员
private final Context mContext = getActivity();
片段当时没有经历其生命周期,getActivity()返回null,这与您在onCreateViewHolder中使用的上下文相同。。。所以还是空的。。。因为主要问题是
private final Context mContext=getActivity()代码>在片段中可能是拙劣的@SelvinonCreateViewHolder
正在使用视图组为视图充气。那个这就是我的意思我已经更改了,谢谢,你的代码是work:)@blackbelt,这与你在onCreateViewHolder中使用的上下文相同。。。所以还是空的。。。因为主要问题是private final Context mContext=getActivity()代码>在片段中可能是拙劣的@SelvinonCreateViewHolder
正在使用视图组为视图充气。那个这就是我的意思我已经更改了,谢谢,你的代码是工作:)@Blackbelt