RecyclerView Adapter не может быть преобразован в List <> - PullRequest
0 голосов
/ 25 февраля 2019

Мой класс адаптера дает мне ошибки:

Список не может быть преобразован в List

Конструктор DataAimsAdapter не может быть применен к данным типам;Обязательно: контекст, найден список: строка, строка, int причина: фактические и формальные списки аргументов различаются по длине

Класс, в котором должен реализовываться RecyclerView

import android.app.Dialog;
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.support.design.widget.BottomSheetBehavior;
    import android.support.design.widget.BottomSheetDialogFragment;
    import android.support.design.widget.CoordinatorLayout;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;

    import java.util.ArrayList;
    import java.util.List;
    import java.util.List;

public class AimsBottomSheetDialogFragment extends BottomSheetDialogFragment {
    List<DataAimsAdapter> tab = new ArrayList<DataAimsAdapter>();
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View RootView = inflater.inflate(R.layout.fragment_aims, container, false);
        // Inflate the layout for this fragment
        View showModalBottomSheet =  (View) RootView.findViewById(R.id.as_modal);

        RecyclerView recyclerView = (RecyclerView) RootView.findViewById(R.id.list);
        // создаем адаптер
        DataAimsAdapter adapter = new DataAimsAdapter(getActivity(),tab);
        // устанавливаем для списка адаптер
        recyclerView.setAdapter(adapter);
        setInitialData();
        return RootView;

    }
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

        private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() {

            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                if (newState == BottomSheetBehavior.STATE_HIDDEN) {
                    dismiss();
                }
            }

            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {
            }
        };


        @Override
        public void setupDialog(Dialog dialog, int style) {
            super.setupDialog(dialog, style);
            View contentView = View.inflate(getContext(), R.layout.aims_dialog_modal, null);
            dialog.setContentView(contentView);
            CoordinatorLayout.LayoutParams layoutParams =
                    (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams();
            CoordinatorLayout.Behavior behavior = layoutParams.getBehavior();
            if (behavior != null && behavior instanceof BottomSheetBehavior) {
                ((BottomSheetBehavior) behavior).setBottomSheetCallback(mBottomSheetBehaviorCallback);
            }
        }
    private void setInitialData(){

        tab.add(new DataAimsAdapter ("Huawei P10", "Huawei", R.drawable.notepad));
        tab.add(new DataAimsAdapter ("Elite z3", "HP", R.drawable.flag));
        tab.add(new DataAimsAdapter ("Galaxy S8", "Samsung", R.drawable.notebook));
        tab.add(new DataAimsAdapter ("LG G 5", "LG", R.drawable.time));
    }
    }

Класс адаптера

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;

public class DataAimsAdapter extends RecyclerView.Adapter<DataAimsAdapter.ViewHolder> {
    private LayoutInflater inflater;
    private List<AimsFragmentRecycler> tab;

    DataAimsAdapter(Context context, List<AimsFragmentRecycler> tab) {
        this.tab = tab;
        this.inflater = LayoutInflater.from(context);
    }



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

        View view = inflater.inflate(R.layout.aims_fragment_list, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(DataAimsAdapter.ViewHolder holder, int position) {
        AimsFragmentRecycler phone = tab.get(position);
        holder.imageView.setImageResource(phone.getImage());
        holder.nameView.setText(phone.getName());
        holder.companyView.setText(phone.getCompany());
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        final ImageView imageView;
        final TextView nameView, companyView;
        ViewHolder(View view){
            super(view);
            imageView = (ImageView)view.findViewById(R.id.image);
            nameView = (TextView) view.findViewById(R.id.name_tittle);
            companyView = (TextView) view.findViewById(R.id.text_of_tap
    }
}

Конструктор классов

public class AimsFragmentRecycler {

    private String name_tittle;
    private String text_of_tap;
    private int image;

    public AimsFragmentRecycler(String name_tittle, String text_of_tap, int image){

        this.name_tittle=name_tittle;
        this.text_of_tap = text_of_tap;
        this.image = image;
    }

    public String getName() {
        return this.name_tittle;
    }

    public void setName(String name_tittle) {
        this.name_tittle = name_tittle;
    }

    public String getCompany() {
        return this.text_of_tap;
    }

    public void setCompany(String text_of_tap) {
        this.text_of_tap = text_of_tap;
    }

    public int getImage() {
        return this.image;
    }

    public void setImage(int image) {
        this.image = image;
    }
}

Адаптер XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="16dp">
    <ImageView
        android:id="@+id/image"
        android:layout_marginRight="20dp"
        android:layout_marginEnd="20dp"
        android:layout_width="36dp"
        android:layout_height="36dp" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/name_tittle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"/>

        <TextView
            android:id="@+id/text_of_tap"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"/>

    </LinearLayout>

1 Ответ

0 голосов
/ 25 февраля 2019

В функции setInitialData у вас есть new DataAimsAdapter, где вместо нее должно быть new AimsFragmentRecycler.Вы создаете неправильный класс.Тогда ваш список вкладок должен иметь тип AimsFragmentRecycler вместо DataAimsAdapter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...