Comment puis-je télécharger une image à l'aide de Glide from URL path


Hirose

Je veux utiliser Glide pour obtenir une image de l'url de l'image, mais j'obtiens une erreur je ne sais pas pourquoi.

je vérifie déjà ce que je peux faire mais je ne comprends pas quel est mon problème dans mon code source

     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" chemin enregistré img url

L'erreur est survenue à partir de ce code

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

je veux savoir quel est le problème ...

Ceci est mon erreur de la console

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)






Mini puce

Comme l'erreur mentionnée, java.lang.NullPointerException: vous ne pouvez pas démarrer un chargement sur une vue non encore attachée ou un fragment où getActivity () retourne null (ce qui se produit généralement lorsque getActivity () est appelé avant que le fragment ne soit attaché ou après le fragment est détruit).

Votre vue de fragment n'est pas encore attachée, assurez-vous que vous avez initialisé votre adaptateur et que vous l'avez attaché à la vue de l'outil de recyclage dans la méthode onViewCreated du fragment. Avec cela, votre activité serait nulle. OnViewCreated est appelé après onCreatedView du fragment, ce qui garantit que vous effectuez toute l'action sur le fragment après la création de votre vue.

Et encore une fois, pas besoin de transmettre le contexte à l'adaptateur, car cela semble être dans les mauvaises pratiques de Google. Si vous avez besoin du contexte dans l'adaptateur, vous pouvez utiliser la méthode view.getcontext () pour obtenir le contexte.

Articles connexes


(comment) puis-je télécharger une image à l'aide de JSoup?

user1499731: Je sais déjà où se trouve l'image, mais par souci de simplicité, je voulais télécharger l'image en utilisant JSoup lui-même. (Ceci est pour simplifier l'obtention de cookies, de référent, etc.) Voici ce que j'ai jusqu'à présent: //Open a URL Strea