如何在 recyclerview 中添加 Startapp 横幅?

How to add Startapp banner in recyclerview?

我发现在我的应用程序中添加 Startapp 的横幅有一些问题,所以如果有人可以帮助我添加它,我将不胜感激。如果有任何遗漏,请告诉我。

Mycode.java

 public ParseAdapter(ArrayList<ParseItem> parseItems, Context context) {
        this.parseItems = parseItems;
        this.context = context;
        dialog = new Dialog(context);
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.parse_item, parent, false);
        return new ViewHolder(view);}
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        ParseItem parseItem = parseItems.get(position);
        holder.textView.setText(parseItem.getTitle());
        holder.duration.setText(parseItem.getSongTime());
        holder.artist.setText(parseItem.getArtist());
        Glide.with(context).load(parseItem.getImgUrl()).into(holder.imageView);

    }

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

“横幅”需要另一种布局。假设您需要将横幅添加为回收站视图中的顶部项目。

首先是getItemCount加1:

override public fun getItemCount() = parseItems.size + 1

然后覆盖 getItemViewType 函数,让适配器知道哪一行需要哪种布局:

override public fun getItemViewType(position:Int) {
    if (position == 0)  // top row
        return R.layout.row_banner
    else
        return R.layout.parse_item
}

然后从视图类型创建视图:

override public fun onCreateViewHolder(parent:ViewGroup, viewType:Int) : ViewHolder 
{
    val view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false)
    return new ViewHolder(view)
}

注意viewType参数是你在getItemViewType中return的,一般我直接用layout id。

然后绑定行:

override public fun onBindViewHolder(hodler: ViewHolder holder, position:Int) {
    if (position == 0) {
        // the banner !
        return
    }
    ParseItem parseItem = parseItems.get(position - 1);

}