абстрактный метод void com.squareup.picasso.Callback.onError (java.lang.Exception) - PullRequest
0 голосов
/ 04 июля 2018

Я новый Devoloper, я хочу загрузить изображение из FirebaseDatabase с помощью Picasso. Но я получаю эту ошибку;

абстрактный метод "void com.squareup.picasso.Callback.onError (java.lang.Exception)

Я не понимаю, что это значит. Потому что я использую уже метод обратного вызова. Вот мой адаптер;

 private void myAdapter() {
        Query query = FirebaseDatabase.getInstance()
                .getReference().child("Category");
        FirebaseRecyclerOptions<Category> options = new FirebaseRecyclerOptions.Builder<Category>().setQuery(query, Category.class).build();
        adapter = new FirebaseRecyclerAdapter<Category, MenuViewHolder>(options) {
            @NonNull
            @Override
            public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.menu_item, parent, false);
                return new MenuViewHolder(view);
            }

            @Override
            protected void onBindViewHolder(@NonNull MenuViewHolder viewHolder, int position, @NonNull Category model) {
                viewHolder.txtMenuName.setText(model.getName());
                Picasso p = Picasso.get();
                p.load(model.image).tag(this).into(viewHolder.menu_image, new Callback() {
                    @Override
                    public void onSuccess() {
                        Toast.makeText(Home.this, "Welcome", Toast.LENGTH_SHORT).show();
                    }

                    @Override
                    public void onError(Exception e) {
                        Toast.makeText(Home.this, "Failed", Toast.LENGTH_SHORT).show();
                        e.getMessage();
                    }
                });


                final Category clickItem = model;
                viewHolder.setItemClickListener(new ItemClickListener() {
                    @Override
                    public void onClick(View view, int position, boolean isLongClick) {
                        Toast.makeText(Home.this, "" + clickItem.getName(), Toast.LENGTH_SHORT).show();
                        Intent food_intent = new Intent(Home.this, FoodList.class);
                        //Because categoryId is key , so we just get key of this item
                        food_intent.putExtra(getCategoryId, adapter.getRef(position).getKey());
                        food_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(food_intent);
                    }
                });
            }
        };
      adapter.startListening();
    }

Я гуглил из интернета, но не нашел ничего полезного. Пожалуйста, помогите мне и спасибо:)

это мой модельный класс;

public class Category {

    private String name;
    public String image;

    public Category() {
    }

    public Category(String name, String image) {
        this.name = name;
        this.image = image;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setImage(String image) {
        this.image = image;
    }
}

это мой конструктор FirebaseDatabase

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Ваш обратный вызов работает нормально, но изображение не может быть загружено. Не могли бы вы рассказать нам больше о "model.image". Попробуйте заменить его жестко запрограммированным URL, вы уверены, что он работает.

0 голосов
/ 04 июля 2018

Надеюсь, это сработает для вас.

Попробуй вот так,

Picasso.with(this).load(model.image).resize(400,400).into(viewHolder.menu_image, new Callback() {
            @Override
            public void onSuccess() {

            }

            @Override
            public void onError() {
               // onError Load Default Image.
            }
        });
...