Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用毕加索从Firebase获取图像到RecyclerView_Java_Android_Firebase_Android Recyclerview - Fatal编程技术网

Java 如何使用毕加索从Firebase获取图像到RecyclerView

Java 如何使用毕加索从Firebase获取图像到RecyclerView,java,android,firebase,android-recyclerview,Java,Android,Firebase,Android Recyclerview,从firebase实时数据库获取图像时遇到问题。图像在存储器中,我在数据库中有一个指向它们的链接,但当我试图让图像显示在recyclerview中时,应用程序在尝试加载记录时崩溃。我已经在gradle.app中添加了依赖项,并且我已经拒绝使用互联网 获取数据的代码 @Override public void onBindViewHolder(RestaurantViewHolder holder, int position) { Restaurant restaurant = resta

从firebase实时数据库获取图像时遇到问题。图像在存储器中,我在数据库中有一个指向它们的链接,但当我试图让图像显示在recyclerview中时,应用程序在尝试加载记录时崩溃。我已经在gradle.app中添加了依赖项,并且我已经拒绝使用互联网

获取数据的代码

@Override
public void onBindViewHolder(RestaurantViewHolder holder, int position) {
    Restaurant restaurant = restaurantList.get(position);

    holder.title.setText(restaurant.getTitle());
    holder.address.setText(restaurant.getAddress());
    holder.cuisine.setText(restaurant.getCuisine());
    holder.duration.setText(restaurant.getDuration());
    holder.PriceRange.setText(restaurant.getPriceRange());

    Picasso.with(context).load(restaurantList.get(position).getImage()).resize(120,90).into(holder.imageView);
}
设置数据的代码

public class RestaurantViewHolder extends RecyclerView.ViewHolder{

    TextView title, address, cuisine, duration, PriceRange;
    ImageView imageView;

    public RestaurantViewHolder(View itemView) {
        super(itemView);

        title = itemView.findViewById(R.id.textViewTitle);
        address = itemView.findViewById(R.id.textViewAddress);
        cuisine = itemView.findViewById(R.id.textViewCuisine);
        duration = itemView.findViewById(R.id.textViewDuration);
        PriceRange = itemView.findViewById(R.id.textViewPriceRange);
        imageView = itemView.findViewById(R.id.viewImage);

    }
}
设置/获取方法

public class Restraunt{

public Restaurant(String image) {
    this.image = image;
}
    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }
}
事故日志

04-20 20:30:14.528 30759-30759/nci.wherenow E/AndroidRuntime: FATAL EXCEPTION: main
Process: nci.wherenow, PID: 30759
java.lang.IllegalArgumentException: Context must not be null.
    at com.squareup.picasso.Picasso$Builder.<init>(Picasso.java:701)
    at com.squareup.picasso.Picasso.with(Picasso.java:662)
    at nci.wherenow.RestaurantAdapter.onBindViewHolder(RestaurantAdapter.java:48)
    at nci.wherenow.RestaurantAdapter.onBindViewHolder(RestaurantAdapter.java:19)
    at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6482)
    at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6515)
    at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5458)
    at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5724)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559)
    at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229)
    at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556)
    at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516)
    at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608)
    at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693)
    at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3109)
    at android.view.View.measure(View.java:22104)
    at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:934)
    at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:973)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at com.android.internal.policy.DecorView.onMeasure(DecorView.java:722)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2441)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1522)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1775)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1410)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6834)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
    at android.view.Choreographer.doCallbacks(Choreographer.java:778)
    at android.view.Choreographer.doFrame(Choreographer.java:713)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6809)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
崩溃更新2

04-20 20:45:41.030 4227-4227/nci.wherenow E/AndroidRuntime: FATAL EXCEPTION: main
Process: nci.wherenow, PID: 4227
java.lang.IllegalArgumentException: Context must not be null.
    at com.squareup.picasso.Picasso$Builder.<init>(Picasso.java:701)
    at com.squareup.picasso.Picasso.with(Picasso.java:662)
    at nci.wherenow.RestaurantAdapter.onBindViewHolder(RestaurantAdapter.java:48)
    at nci.wherenow.RestaurantAdapter.onBindViewHolder(RestaurantAdapter.java:19)
    at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6482)
    at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6515)
    at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5458)
    at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5724)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559)
    at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229)
    at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556)
    at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516)
    at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608)
    at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693)
    at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3109)
    at android.view.View.measure(View.java:22104)
    at android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:934)
    at android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:973)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
    at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
    at com.android.internal.policy.DecorView.onMeasure(DecorView.java:722)
    at android.view.View.measure(View.java:22104)
    at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2441)
    at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1522)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1775)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1410)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6834)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
    at android.view.Choreographer.doCallbacks(Choreographer.java:778)
    at android.view.Choreographer.doFrame(Choreographer.java:713)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6809)
    at java.lang.reflect.Method.invoke(Native Method)
04-20 20:45:41.031 4227-4227/nci.wherenow E/AndroidRuntime:     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
04-20 20:45:41.030 4227-4227/nci.wherenow E/AndroidRuntime:FATAL EXCEPTION:main
进程:nci.wherenow,PID:4227
java.lang.IllegalArgumentException:上下文不能为null。
在com.squareup.picasso.picasso$Builder上
位于com.squareup.picasso.picasso.with(picasso.java:662)
位于nci.wherenow.RestaurantAdapter.onBindViewHolder(RestaurantAdapter.java:48)
位于nci.wherenow.RestaurantAdapter.onBindViewHolder(RestaurantAdapter.java:19)
位于android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6482)
位于android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6515)
在android.support.v7.widget.RecyclerView$Recycler.TryBindViewHolderByDadline(RecyclerView.java:5458)上
在android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderFormationByDaildate(RecyclerView.java:5724)上
位于android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563)
位于android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559)
位于android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229)
位于android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1556)
位于android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516)
位于android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608)
位于android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693)
位于android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3109)
在android.view.view.measure(view.java:22104)
位于android.support.constraint.ConstraintLayout.internalMeasureChildren(ConstraintLayout.java:934)
位于android.support.constraint.ConstraintLayout.onMeasure(ConstraintLayout.java:973)
在android.view.view.measure(view.java:22104)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
位于android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
位于android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
在android.view.view.measure(view.java:22104)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
位于android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:400)
在android.view.view.measure(view.java:22104)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
位于android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
在android.view.view.measure(view.java:22104)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
位于android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
位于android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
位于android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
在android.view.view.measure(view.java:22104)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6584)
位于android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
位于com.android.internal.policy.DecorView.onMeasure(DecorView.java:722)
在android.view.view.measure(view.java:22104)
在android.view.ViewRootImpl.performMeasure上(ViewRootImpl.java:2441)
在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1522)
在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1775)
位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1410)
在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6834)
在android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
位于android.view.Choreographer.doCallbacks(Choreographer.java:778)
位于android.view.Choreographer.doFrame(Choreographer.java:713)
在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)中
位于android.os.Handler.handleCallback(Handler.java:789)
位于android.os.Handler.dispatchMessage(Handler.java:98)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6809)
位于java.lang.reflect.Method.invoke(本机方法)
04-20 20:45:41.031 4227-4227/nci.wherenow E/AndroidRuntime:com.android.internal.os.zyote$MethodAndArgsCaller.run(zyote.java:240)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

//在模型中声明餐厅空构造函数

java餐厅

public Restaurant() {
    }
public String getImage() {
return image;
}

public void setImage(String image) {
    this.image = image;
}
主要类别:- 在BindViewHolder上替换代码

Restaurant restaurant = new Restaurant();
Picasso.with(getContext()).load(restaurant.getImage()).resize(200, 200).into(holder. 
imageView);

在活动中尝试此操作,将“this”传递给适配器,如:

RecyclerAdapter r = new  RecyclerAdapter(this);
然后在RecyclerAdapter类构造函数中:

Context context; // global
public RecyclerAdapter(Context context){
this.context = context;
}

您的上下文为空,这就是问题所在,请尝试将上下文从活动(将适配器添加到回收器视图的位置)传递到RestaurantAdapter(到构造函数),并与毕加索一起使用


在活动中使用getBaseContext()(您在其中创建了Restaurent适配器的实例),并将其传递给适配器构造函数,然后在毕加索中使用它。

您只需初始化上下文即可。您可以如上所述将其传递给适配器构造函数。或者,您可以在应用程序类中定义静态上下文,并在应用程序类onCreate方法中对其进行初始化。但第一种更可能是这样。

你能发布你的崩溃日志吗!添加了崩溃日志
上下文不能为null
。您正在将空上下文传递给毕加索。崩溃是否为l
Context context; // global
public RecyclerAdapter(Context context){
this.context = context;
}