android - 我如何使用 glide 从 url 路径上传图像

标签 android image imageview load

想用Glide获取图片url的图片,但是报错 我不知道为什么。

我已经检查了我能做什么,但我不明白我的源代码中的问题是什么

     public class ProductAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {



    Context mContext;
    private ArrayList<Product> productList;
    String intent_first;
    String intent_last;
    String intent_phnumber;
    String intent_addr;


    public ProductAdapter(ArrayList<Product> productList, Context c, String pre_first, String pre_last, String detail_addr, String phNumber){
        this.mContext = c;
        this.productList = productList;
        this.intent_first = pre_first;
        this.intent_last = pre_last;
        this.intent_addr = detail_addr;
        this.intent_phnumber = phNumber;



    }


    public static class MyViewHolder extends RecyclerView.ViewHolder {
        ImageView proimage;
        TextView pro_name;
        TextView pro_cont;
        TextView pro_price;

        MyViewHolder(View view){
            super(view);

            proimage = view.findViewById(R.id.productimage);
            pro_name = view.findViewById(R.id.productname);
            pro_cont = view.findViewById(R.id.productcont);
            pro_price= view.findViewById(R.id.productprice);

        }

    }




    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_product, parent,false);
        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder, int position) {

        final MyViewHolder myViewHolder = (MyViewHolder) viewHolder;
        final int Position = position;

        Log.e("result",productList.get(position).productimage);

        Glide.with(mContext).load(productList.get(position).productimage).into(myViewHolder.proimage);
        myViewHolder.pro_name.setText(productList.get(position).productname);
        myViewHolder.pro_cont.setText(productList.get(position).productcont);
        myViewHolder.pro_price.setText(productList.get(position).productprice + "원");



        myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                Toast.makeText(v.getContext(),myViewHolder.text1.getText(), Toast.LENGTH_SHORT).show();
//                Toast.makeText(v.getContext(),myViewHolder.etp_name.getText(), Toast.LENGTH_SHORT).show();
                String proname = (String) myViewHolder.pro_name.getText();
                String proprise = (String) myViewHolder.pro_price.getText();
                String procont = (String) myViewHolder.pro_cont.getText();



                Intent intent = new Intent(v.getContext(), ProductOrderActivity.class);
                intent.putExtra("proname", proname);
                intent.putExtra("proprise",proprise);
                intent.putExtra("procont", procont);
                intent.putExtra("first", intent_first);
                intent.putExtra("last", intent_last);
                intent.putExtra("ph", intent_phnumber);
                intent.putExtra("addr", intent_addr);





                v.getContext().startActivity(intent);
            }

        });


    }


    @Override
    public int getItemCount() {

        return productList.size();

    }

'productimage' 保存路径 img url

此代码发生错误

Glide.with(mContext).load(productList.get(position).productimage).placeholder(R.drawable.hotel).into(myViewHolder.proimage);

我想知道是什么问题...

这是我的控制台错误

2019-06-10 18:23:20.901 21127-21127/com.example.blogapp D/AndroidRuntime: Shutting down VM
2019-06-10 18:23:20.904 21127-21127/com.example.blogapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.blogapp, PID: 21127
    java.lang.NullPointerException: You cannot start a load on a not yet attached View or a Fragment where getActivity() returns null (which usually occurs when getActivity() is called before the Fragment is attached or after the Fragment is destroyed).
        at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:31)
        at com.bumptech.glide.Glide.getRetriever(Glide.java:684)
        at com.bumptech.glide.Glide.with(Glide.java:716)
        at com.example.together.Adapter.ProductAdapter.onBindViewHolder(ProductAdapter.java:88)
        at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
        at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
        at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
        at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
        at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
        at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
        at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
        at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
        at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)
        at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3336)
        at android.view.View.measure(View.java:23169)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
        at android.view.View.measure(View.java:23169)
        at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1308)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.widget.ScrollView.onMeasure(ScrollView.java:350)
        at android.view.View.measure(View.java:23169)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
        at android.view.View.measure(View.java:23169)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
        at android.view.View.measure(View.java:23169)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
        at android.view.View.measure(View.java:23169)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at android.view.View.measure(View.java:23169)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1535)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:825)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:704)
        at android.view.View.measure(View.java:23169)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6749)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
        at com.android.internal.policy.DecorView.onMeasure(DecorView.java:716)
2019-06-10 18:23:20.904 21127-21127/com.example.blogapp E/AndroidRuntime:     at android.view.View.measure(View.java:23169)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2718)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1572)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1855)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
        at android.view.Choreographer.doCallbacks(Choreographer.java:761)
        at android.view.Choreographer.doFrame(Choreographer.java:696)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)






最佳答案

正如提到的错误,java.lang.NullPointerException:您无法在 getActivity() 返回 null 的尚未附加的 View 或 fragment 上开始加载(这通常发生在附加 fragment 之前调用 getActivity() 或在 Fragment 被销毁后)。

您的 fragment View 尚未附加,请确保您已初始化适配器并将其附加到 fragment 的 onViewCreated 方法内的回收器 View 。有了这个,您的 Activity 将为空。 OnViewCreated 在 fragment 的 onCreatedView 之后调用,确保在创建 View 后对 fragment 执行所有操作。

而且,不需要将上下文传递给适配器,因为这似乎是谷歌的不良做法。如果你需要适配器中的上下文,那么你可以使用 view.getcontext() 方法来获取上下文。

关于android - 我如何使用 glide 从 url 路径上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56523817/

相关文章:

android - 在 Activity 开始时获得通知/接收明确的 Intent

image - 将图片上传到grails的web-app/image目录

android - Android ImageView 上的抗锯齿圆角

javascript - 如何在 React Native 中从 PHP 获取 json

android - 检索 sqlite blob 字段以放入 imageview

android - 使用 Flutter 确认购买

image - 什么是图像处理中的稀疏性?

html - 如果屏幕不够宽,如何使用 CSS 有条件地调整图像大小?

android - 如何正确缩放 WebView 及其背景图片?

java - 尝试从 ImageView 的 onTouchListener 获取位图像素