javaandroidandroid-recyclerviewadsnative-ads

incompatible types: cant compare a class to a native ad


I am new to android studios I am currently changing my FirestoreRecyclerOptions to a regular recycler view because I want to add native ads every 5 posts. The current issue I am facing is that the method getItemViewType what I want it to return is if it's either an ad or regular post using instance of. In the tutorial videos they do something along the line of

@Override
    public int getItemViewType(int position) {
        if (noteList.get(position) instanceof UnifiedNativeAd) {
            return TYPE_AD;
        }else {
            return TYPE_REG;
        }
    }

But the condition inside the if statement is giving me this error

error: incompatible types: Note cannot be converted to UnifiedNativeAd
        if (noteList.get(position) instanceof UnifiedNativeAd) {

CLASS

public class Note {
    public int timestamp;
    public List<String> replies;
    public String ownerName;
    public String ownerId;
    public String text;
    public String imageURL;
    public List<String> usersLiked;
    public String message;
    public String timePosted;
    public int likes;
    public int replyCount;


    public Note() {
    }

    public Note(int timestamp, String ownerId, String text, String ownerName, String imageURL, List<String> replies, List<String>
            usersLiked, String message, String timePosted, int likes, int replyCount) {
        this.timestamp = timestamp;
        this.ownerId = ownerId;
        this.text = text;
        this.ownerName = ownerName;
        this.imageURL = imageURL;
        this.replies = replies;
        this.usersLiked = usersLiked;
        this.message = message;
        this.timePosted = timePosted;
        this.likes = likes;
        this.replyCount = replyCount;
    }

    public int getTime() {
        return timestamp;
    }

    public String getOwnerName() {
        return ownerName;
    }

    public String getId() {
        return ownerId;
    }

    public String getPost() {
        return text;
    }

    public List<String> getreplies() {
        return replies;
    }

    public String getImageURL() {
        return imageURL;
    }

    public List<String> getUsersLiked() {
        return usersLiked;
    }

    public String getMessage() {
        return message;
    }

    public String getTimePosted() {
        return timePosted;
    }

    public int getLikes() {
        return likes;
    }

    public int getReplyCount() {
        return replyCount;
    }
}

FULL RECYCLERVIEW

ublic class adapterRegular extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private final static int TYPE_AD=0;
    private final static int TYPE_REG=1;

    private Context context;
    private List<Note> noteList;

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {


    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        context = parent.getContext();
        if(viewType == TYPE_AD){
            View view = LayoutInflater.from(context).inflate(R.layout.reclyerads,parent,false);
            return new AdTemplateViewHolder(view);
        }
        View view = LayoutInflater.from(context).inflate(R.layout.list_row,parent,false);
        return new noteHolder(view);
    }

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

    public class noteHolder extends RecyclerView.ViewHolder{
        TextView ownerName;
        TextView timestamp;
        TextView text;
        ImageView imageURL;
        TextView replies;
        TextView likes;
        ImageView heart;

        public noteHolder(@NonNull View itemView) {
            super(itemView);
            ownerName = itemView.findViewById(R.id.userName);
            timestamp = itemView.findViewById(R.id.time);
            text = itemView.findViewById(R.id.post);
            imageURL = itemView.findViewById(R.id.profilePic);
            replies = itemView.findViewById(R.id.REPLY);
            likes = itemView.findViewById(R.id.likes);
            heart = itemView.findViewById(R.id.heart);
        }
    }

    public class AdTemplateViewHolder extends RecyclerView.ViewHolder{
        TemplateView templateView;

        public AdTemplateViewHolder(@NonNull View itemView) {
            super(itemView);
            templateView = itemView.findViewById(R.id.my_template);
            NativeTemplateStyle style = new NativeTemplateStyle.Builder()
                    .withMainBackgroundColor(new ColorDrawable(Color.parseColor("#FFFFFF"))).build();
            templateView.setStyles(style);
        }
        public void setUnifiedNativeAd(UnifiedNativeAd ads){
            templateView.setNativeAd(ads);
        }

    }

    @Override
    public int getItemViewType(int position) {
        if (noteList.get(position) instanceof UnifiedNativeAd) {
            return TYPE_AD;
        }else {
            return TYPE_REG;
        }
    }
}

ANY HELP OR SUGGESTION IS APPERCIATED


Solution

  • Change this

    private List<Note> noteList;
    

    To this

    private List<Object> noteList;