Как добавить баннер Startapp в recyclerview?

avatar
Joseph Langa
8 августа 2021 в 22:23
74
1
0

Я обнаружил некоторые проблемы с добавлением баннера 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();
    }
Источник

Ответы (1)

avatar
AIMIN PAN
9 августа 2021 в 00:35
0

Вам нужен другой макет для "баннера". Предположим, вам нужно добавить баннер в качестве верхнего элемента в представлении переработчика.

сначала нужно добавить 1 к getItemCount:

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, обычно я использую идентификатор макета напрямую.

и затем свяжите строки:

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

}
Joseph Langa
9 августа 2021 в 14:12
0

не могли бы вы написать это, чтобы я мог скопировать и вставить его в свой код?