Recyclerview Adapter崩溃应用中滑行的实现,[重复]

问题描述 投票:-1回答:2

尝试在recyclerView App中实现Glide崩溃。Logcat说

        W/ResourceType: No package identifier when getting name for resource number 0x00000000
V/studio.deploy: Package broadcast exit hook { cmd=3, time=75125210000000, thread=2 }
    Fixing application and activity contexts
W/ResourceType: No package identifier when getting name for resource number 0x00000000
E/RecyclerView: No adapter attached; skipping layout
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.tc, PID: 26232
    java.lang.IllegalArgumentException: You must pass in a non null View
        at com.bumptech.glide.GenericRequestBuilder.into(GenericRequestBuilder.java:685)
        at com.bumptech.glide.DrawableRequestBuilder.into(DrawableRequestBuilder.java:457)
        at com.example.tc.TCAdapter.onBindViewHolder(TCAdapter.java:44)
        at com.example.tc.TCAdapter.onBindViewHolder(TCAdapter.java:22)

我的实现代码为

Glide.with( context ).load( tcImages.get( position ).getFullName() ).into( holder.imageView );

我的完整适配器代码为


public class TCAdapter extends RecyclerView.Adapter<TCAdapter.MyViewHolder> {

    List<TCImages> tcImages;
    Context context;


    ImageView imageView;

    public TCAdapter(List<TCImages> tcImages, Context context){
        this.tcImages = tcImages;
        this.context = context;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from( context );
        View view = inflater.inflate( R.layout.item_tc_recycler, parent, false );
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        holder.textView.setText( tcImages.get( position ).getEmail() );
        Glide.with( context ).load( tcImages.get( position ).getFullName() ).into( holder.imageView );
//        Glide.with( context ).load( "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" ).into( holder.imageView );
//        Toast.makeText(context, tcImages.get( position ).getFullName().toString(), Toast.LENGTH_LONG).show();
    }

    @Override
    public int getItemCount() {
        return tcImages.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        TextView textView;
        ImageView imageView;
        public MyViewHolder(@NonNull View itemView) {
            super( itemView );
            textView = (TextView) itemView.findViewById( R.id.txtItem );
            imageView = (ImageView) itemView.findViewById( R.id.imageView );
        }
    }
}

即使在崩溃时也尝试粘贴图像地址的直接字符串

android android-recyclerview android-glide
2个回答
1
投票

取决于您的Logcat,您正在将图像从ViewHolder平台加载到NULL ImageView中,请确保ImageViewIdR.layout.item_tc_recycler中是正确的当绑定图像在这里查看

    imageView = (ImageView) itemView.findViewById( R.id.imageView );

1
投票

您的图像视图可能有问题,看起来imageView = (ImageView) itemView.findViewById( R.id.imageView )可能为空,请检查ID是否正确以及视图是否不为空

© www.soinside.com 2019 - 2024. All rights reserved.