java - Picasso 中的错误 get() 无法应用于 (android.content.Context)

标签 java android android-studio

我正在构建一个应用程序,当我尝试发布 apk 时,我从 Picasso 中的 mContext 收到此错误,我在 gradle 中添加了实现 com.squareup.picasso:picasso:2.5.2 但仍然存在问题,我将 With() 替换为 get() ,同样的问题:

get( )in Picasso cannot be applied to(android.content.Context)

package com.maker.Adapter;

import android.content.Context;
import android.content.CursorLoader;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.MediaStore;
import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.maker.MediaStorage.CursorRecyclerViewAdapter;
import com.maker.R;
import com.squareup.picasso.Picasso;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;


public class MostRecentImagesAdapter extends CursorRecyclerViewAdapter<MostRecentImagesAdapter.ViewHolder> {

    private Context mContext;
    private OnItemClickListener onItemClickListener;

    public MostRecentImagesAdapter(Context context, Cursor cursor) {
        super(context, cursor, "");
        mContext = context;
    }


    @Override
    public void onBindViewHolder(final ViewHolder viewHolder, final Cursor cursor, final int position) {

        viewHolder.setData(cursor);
        int int_ID = cursor.getInt(cursor.getColumnIndex(MediaStore.Images.Media._ID));
        getThumbnail(int_ID, viewHolder.imgSd);


    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.row_storeage_image, parent, false);
        return new ViewHolder(itemView);
    }

    public void setOnItemClickListener(OnItemClickListener listener) {
        onItemClickListener = listener;
    }
    public OnItemClickListener getOnItemClickListener() {
        return onItemClickListener;
    }


    public interface OnItemClickListener {
        void onItemClick(ViewHolder item, int position);

    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private ImageView imgSd;
        private TextView txtSd;


        public ViewHolder(View v) {
            super(v);


            imgSd = (ImageView) v.findViewById(R.id.imgSd);
            txtSd = (TextView) v.findViewById(R.id.txtSd);

        }

        public void setData(Cursor cursor) {
            int uriIndex = getUriIndex(getCursor());
            String itemUri = getCursor().getString(uriIndex) + "/" + getCursor().getString(getCursor().getColumnIndexOrThrow(MediaStore.Video.Media._ID));
            txtSd.setText(itemUri);

        }
    }

    private int getUriIndex(Cursor c) {
        int uriIndex;
        String[] columnNames = {
                MediaStore.Video.Media.INTERNAL_CONTENT_URI.toString(),
                MediaStore.Video.Media.EXTERNAL_CONTENT_URI.toString()
        };

        int i = 0;
        for (String columnName : Arrays.asList(columnNames)) {
            i++;
            Log.e(":Loadin", i + "");
            uriIndex = c.getColumnIndex(columnName);
            if (uriIndex >= 0) {
                return uriIndex;
            }
            // On some phones and/or Android versions, the column name includes the double quotes.
            uriIndex = c.getColumnIndex("\"" + columnName + "\"");
            if (uriIndex >= 0) {
                return uriIndex;
            }
        }
        return -1;
    }

    private Bitmap getThumbnail(int id, ImageView imageView) {
        final String thumb_DATA = MediaStore.Video.Thumbnails.DATA;
        final String thumb_IMAGE_ID = MediaStore.Video.Thumbnails.VIDEO_ID;
        final Uri thumbUri = MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI;
        String[] thumbColumns = {thumb_DATA, thumb_IMAGE_ID};
        CursorLoader thumbCursorLoader = new CursorLoader(
                mContext,
                thumbUri,
                thumbColumns,
                thumb_IMAGE_ID + "=" + id,
                null,
                null);
        Cursor thumbCursor = thumbCursorLoader.loadInBackground();
        Bitmap thumbBitmap = null;
        if (thumbCursor.moveToFirst()) {
            int thCulumnIndex = thumbCursor.getColumnIndex(thumb_DATA);
            String thumbPath = thumbCursor.getString(thCulumnIndex);
            Picasso.get(mContext).load(new File(thumbPath)).into(imageView);
        }
        return thumbBitmap;
    }

    private Bitmap decodeFile(File f) {
        try {
            // Decode image size
            BitmapFactory.Options o = new BitmapFactory.Options();
            o.inJustDecodeBounds = true;
            BitmapFactory.decodeStream(new FileInputStream(f), null, o);

            // The new size we want to scale to
            final int REQUIRED_SIZE = 350;

            // Find the correct scale value. It should be the power of 2.
            int scale = 1;
            while (o.outWidth / scale / 2 >= REQUIRED_SIZE &&
                    o.outHeight / scale / 2 >= REQUIRED_SIZE) {
                scale *= 2;
            }

            BitmapFactory.Options o2 = new BitmapFactory.Options();
            o2.inSampleSize = scale;
            return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
        } catch (FileNotFoundException e) {
        }
        return null;
    }

}

最佳答案

只需使用:

Picasso.get()
  .load(new File(thumbPath))
  .into(imageView);

关于java - Picasso 中的错误 get() 无法应用于 (android.content.Context),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57516430/

相关文章:

java - 从回收站 View 中获取原始项目?

java - 如何在 Java 中制作 Windows 7 工具提示

android - 错误 : View android. widget.ListView 不是滑动抽屉

android镜像imageresource在imagebutton的src中

android - 图片解码失败。提供的图像必须是位图。 - 使用 PNG

安卓工作室 : "shared" module directories of KMM project keep getting unmarked as sources root

java - jacoco 分支覆盖和 Sonar 条件覆盖有什么区别?

java - 运行时使用插件的不同库版本

android - 在 SQLiteDatabase.query() 中使用 String[] selectionArgs

java - Android studio 中的 Android 注解 - 无法访问 Activity_?