'error: incompatible types: ImageActivity cannot be converted to Context

I'm getting this incompatible type error for my code. The error shows in ImageActivity class.

The error is in line: imageAdapter = new ImageAdapter(ImageActivity.this, uploads); It says ImageActivity.this can't convert to Context type and I'm not sure why.

I did some research and I found that I could use getActivity() instead of ImageActivity.this I tried it but it didn't work either.

I attached the code files below, please help, thank you.

ImageActivity code:

public class ImageActivity extends AppCompatActivity implements ImageAdapter.OnItemClickListner {
    private RecyclerView recyclerView;
    private ImageAdapter imageAdapter;
    private DatabaseReference dataBaseRef;
    private FirebaseStorage storage;
    private ValueEventListener DBListener;
    private List<Upload> uploads;
    private ProgressBar progressCircle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image_activity);
        progressCircle.findViewById(R.id.progressbar_circle);
        recyclerView.findViewById(R.id.recycler);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        uploads = new ArrayList<>();
        imageAdapter = new ImageAdapter(ImageActivity.this, uploads);
        recyclerView.setAdapter(imageAdapter);
        imageAdapter.setOnItemClickListener(ImageActivity.this);

        

ImageAdapter code:

public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> {
        private Context context;
        private List<Upload> uploadList;
        private OnItemClickListner listner;
    
        public ImageAdapter(Context context, List<Upload> uploadList) {
            this.context = context;
            this.uploadList = uploadList;
        }
    
        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.images, parent, false );
            return new ViewHolder(v);
        }

@Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Upload uploadCurrent = uploadList.get(position);
        Picasso.get().load(uploadCurrent.getImageUrl()).placeholder(R.mipmap.ic_launcher)
                .fit().centerInside().into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return uploadList.size();
    }
    }
       


Solution 1:[1]

As I know you don't need to use getActivity() or ImageActivity.this, if you want to get the context of your activity use this.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mahdi Iranmanesh