Мой адаптер для повторного просмотра просто загружает первый видоискатель, - PullRequest
0 голосов
/ 25 декабря 2018

Может кто-нибудь помочь мне заставить адаптер загрузить 3 видоискателя.Я хотел бы, чтобы загружались мои три рециркулятора, а не только один.

Down Bellow - это код:

private Context ctx;
private ArrayList<Feed_modell> feed_modellArrayList;
private static final int ads = 0;
private static final int videoDetails = 1;
private static final int recommendations = 2;


public infoFragment_adapter(Context ctx, ArrayList<Feed_modell> feedArrayList) {

    this.feed_modellArrayList = feedArrayList;
    this.ctx = ctx;
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

    switch (viewType){
        case ads :

            View adsView = LayoutInflater.from(parent.getContext()).inflate(R.layout.native_ads_layout, parent, false);
            return new viewHolderAds(adsView,ctx);

        case videoDetails :

            default:

                View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.video_details, parent, false);
                return new viewHolderDetails(view);

        case recommendations :

            View viewreco = LayoutInflater.from(parent.getContext()).inflate(R.layout.video_details, parent, false);
            return new viewHolderReco(viewreco);
    }
}

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

    int viewtype = getItemViewType(position);
    final Feed_modell modell = feed_modellArrayList.get(position);

    switch (viewtype){
        case ads:

            viewHolderAds viewHolderAds = (viewHolderAds) holder;
            viewHolderAds.adView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    Intent intent = new Intent(ctx, edit_profile.class);
                    ctx.startActivity(intent);
                }
            });

            break;

        case videoDetails:

            viewHolderDetails viewHolderDetails = (viewHolderDetails) holder;
            viewHolderDetails.title.setText(modell.getTitle());
            viewHolderDetails.name.setText(modell.getName2());

            viewHolderDetails.title.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    Feed_modell modell = feed_modellArrayList.get(position);
                    // see the profile whom post this Video
                    Intent gotoProfile = new Intent(ctx, user_profile.class);
                    gotoProfile.putExtra("profilekey", modell.getUID());
                    ctx.startActivity(gotoProfile);
                }
            });

            break;


        case recommendations:

            viewHolderReco vhReco = (viewHolderReco) holder;
            vhReco.titleReco.setText(modell.getTitle());
            vhReco.nameReco.setText(modell.getName2());

            break;
    }
}

public static class viewHolderAds extends RecyclerView.ViewHolder {

    private View view;
    private AdRequest adRequest;
    private AdView adView;

    public viewHolderAds (View itemView, final Context ctx) {
        super(itemView);

        view = itemView;

        adView = view.findViewById(R.id.adView2);
        MobileAds.initialize(ctx.getApplicationContext(), "ca-app-pub-3940256099942544~3347511713");
        adRequest = new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build();
        adView.loadAd(adRequest);


    }
}

public static class viewHolderDetails extends RecyclerView.ViewHolder {

    TextView title, name;
    View view2;
    Context ctx;

    viewHolderDetails (View itemView) {
        super(itemView);

        view2 = itemView;
        title = view2.findViewById(R.id.title_Id);
        name = view2.findViewById(R.id.username_id);

    }

}

public static class viewHolderReco extends RecyclerView.ViewHolder {

    static TextView titleReco, nameReco;
    static ImageView image;
    View viewReco;
    Context ctx;

    viewHolderReco (View itemView) {
        super(itemView);

        viewReco = itemView;
        nameReco = viewReco.findViewById(R.id.namereco);
        image = viewReco.findViewById(R.id.imgviewreco);
        titleReco = viewReco.findViewById(R.id.titlereco);

    }

}

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

@Override
public int getItemViewType(int position) {


    return position % 2 * 2;
}

Возможно, я делаю что-то не так, используя ItemViewType Просто добавляю ispolumтекст, потому что переполнение стека не позволяет мне задать этот вопрос, не добавляя больше деталей ...

Игнорировать это: Lorem ipsum - это псевдо-латинский текст, используемый в веб-дизайне, типографике, верстке и печати вместо английскогоподчеркнуть элементы дизайна над контентом.Это также называется заполнителем (или заполнителем) текста.Это удобный инструмент для макетов.Это помогает очертить визуальные элементы документа или презентации, например, типографику, шрифт или макет.Lorem ipsum является частью латинского текста классического автора и философа Цицерона.Его слова и буквы были изменены путем добавления или удаления, чтобы преднамеренно сделать его содержание бессмысленным;это больше не подлинная, правильная или понятная латынь.Хотя Lorem Ipsum все еще напоминает классическую латынь, на самом деле это не имеет никакого значения.Поскольку текст Цицерона не содержит буквы K, W или Z, чуждые латинскому языку, эти и другие символы часто вставляются случайным образом для имитации типографского вида европейских языков, так же как орграфы не встречаются в оригинале.

В профессиональном контексте часто случается, что частные или корпоративные клиенты делают заказ для публикации и представления с фактическим содержанием, которое еще не готово.Подумайте о новостном блоге, который наполнен ежечасно в день выхода в эфир.Тем не менее, рецензенты, как правило, отвлекаются на понятный контент, скажем, случайный текст, скопированный из газеты или Интернета.Скорее всего, сосредоточиться на тексте, не обращая внимания на макет и его элементы.Кроме того, случайный текст может быть непреднамеренно смешным или оскорбительным, что является неприемлемым риском в корпоративной среде.Lorem ipsum и его многочисленные варианты используются с начала 1960-х годов, и вполне вероятно, с шестнадцатого века.

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Удалите default из вашего onCreateViewHolder() метода и int viewtype = getItemViewType(position) из onBindViewHolder().Вы должны проверить ViewHolder введите onBindViewHolder, проверив экземпляр параметра держателя:

if(holder instanceOf viewHolderAds) {
    // todo
} else if(holder instanceOf(viewHolderDetails) {
    // todo
}

и измените причину метода getItemViewType из того, что я вижу, он не возвращает правильные значения.

0 голосов
/ 25 декабря 2018

установить высоту и ширину родительского макета как wrap_content

...