Как я могу загрузить изображение, используя скользящий путь от URL-адреса - PullRequest
1 голос
/ 10 июня 2019

Я хочу использовать 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)






1 Ответ

1 голос
/ 10 июня 2019

Как упомянуто об ошибке, java.lang.NullPointerException: вы не можете начать загрузку еще не присоединенного представления или фрагмента, где getActivity () возвращает значение null (что обычно происходит, когда getActivity () вызывается до присоединения фрагмента или после уничтожения фрагмента).

Ваше представление фрагмента еще не присоединено, убедитесь, что вы инициализировали свой адаптер и подключили его к представлению рециркулятора внутри метода onViewCreated фрагмента. При этом ваша активность будет нулевой. OnViewCreated вызывается после onCreatedView фрагмента, который обеспечивает выполнение всех действий над фрагментом после создания представления.

И снова, нет необходимости передавать контекст адаптеру, так как это выглядит как плохие практики Google. Если вам нужен контекст в адаптере, вы можете использовать метод view.getcontext () для получения контекста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...