Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2016, 18:27   #1
serSeventin
Новичок
Джуниор
 
Регистрация: 11.12.2016
Сообщений: 1
По умолчанию Scene

Здравствуйте уважаемые форумчане!
Столкнулся с такой проблемой, в RecyclerView создаю адаптер для добавления карточек, в карточке, в левом верхнем углу находится картинка, при нажатии на которую карточка увеличивается в размерах и в ней меняется FrameLayout.
Вот все исходники:
Код:
public class CardMenu {
    int mImage;
    String mName;
    String mAmount;
    String mData;
    String mTime;
    String mAdd;
    String mDel;

    CardMenu(int image, String name, String amount, String data, String time, String add, String del) {
        mImage = image;
        mName = name;
        mAmount = amount;
        mData = data;
        mTime = time;
        mAdd = add;
        mDel = del;
    }
}
Код:
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initializeData();

        mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view_menu);
        mRecyclerView.setHasFixedSize(true);

        mLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.setLayoutManager(mLayoutManager);

        mAdapter = new RecyclerAdapter(card_menu);
        mRecyclerView.setAdapter(mAdapter);
    }
}
[/JAVA]

[JAVA]
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
    List<CardMenu> card_menu;
    Scene scene1;
    Scene scene2;
    ViewGroup parent;
    ViewGroup view_scene1;
    ViewGroup view_scene2;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        CardView cv;
        public ImageView imageView;
        public TextView mName;
        public TextView mAmount;
        public TextView mData;
        public TextView mTime;
        public TextView mAdd;
        public TextView mDel;

        public ViewHolder(View v) {
            super(v);
            InitializeScene1(v);
        }

        void InitializeScene1(View v) {
            cv        = (CardView)  v.findViewById(R.id.card_view);
            imageView = (ImageView) v.findViewById(R.id.image_view);
            mName     = (TextView)  v.findViewById(R.id.name);
            mAmount   = (TextView)  v.findViewById(R.id.amount);
            mAdd      = (TextView)  v.findViewById(R.id.add);
            mDel      = (TextView)  v.findViewById(R.id.del);
        }

        void InitializeScene2(View v) {
            cv        = (CardView)  v.findViewById(R.id.card_view);
            imageView = (ImageView) v.findViewById(R.id.image_view);
            mName     = (TextView)  v.findViewById(R.id.name);
            mAmount   = (TextView)  v.findViewById(R.id.amount);
            mData     = (TextView)  v.findViewById(R.id.data);
            mTime     = (TextView)  v.findViewById(R.id.time);
            mAdd      = (TextView)  v.findViewById(R.id.add);
            mDel      = (TextView)  v.findViewById(R.id.del);
        }
    }

    public RecyclerAdapter(List<CardMenu> card_menu) {
        this.card_menu = card_menu;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        Log.d("my", "onCreateViewHolder");
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.recycler_view_menu_item, parent, false);

        this.parent = parent;

        scene1 = Scene.getSceneForLayout(parent, R.layout.scene1, parent.getContext());
        scene2 = Scene.getSceneForLayout(parent, R.layout.scene2, parent.getContext());

        ViewHolder vh = new ViewHolder(v);

        return vh;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        Log.d("my", "onBindViewHolder");
        Log.d("my", "position = " + position);
        holder.imageView.setImageResource(card_menu.get(position).mImage);
        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("my", "onClick!");
                TransitionSet set = new TransitionSet();
                set.addTransition(new Fade());
                set.addTransition(new ChangeBounds());
                set.setOrdering(TransitionSet.ORDERING_TOGETHER);
                set.setDuration(500);
                set.setInterpolator(new AccelerateInterpolator());
                TransitionManager.go(scene2, set);
                Log.d("my", "endClick!");

                View v = LayoutInflater.from(scene2.getSceneRoot().getContext())
                        .inflate(R.layout.recycler_view_menu_item, scene2.getSceneRoot(), false);

                holder.InitializeScene2(v);

                holder.imageView.setImageResource(card_menu.get(position).mImage);
                holder.mName.setText(card_menu.get(position).mName);
                holder.mAmount.setText(card_menu.get(position).mAmount);
                holder.mData.setText(card_menu.get(position).mData);
                holder.mTime.setText(card_menu.get(position).mTime);
                holder.mAdd.setText(card_menu.get(position).mAdd);
                holder.mDel.setText(card_menu.get(position).mDel);
            }
        });
        holder.mName.setText(card_menu.get(position).mName);
        holder.mAmount.setText(card_menu.get(position).mAmount);
        holder.mAdd.setText(card_menu.get(position).mAdd);
        holder.mDel.setText(card_menu.get(position).mDel);
    }

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

    public Scene getScene1() {
        return  scene1;
    }

    public Scene getScene2() {
        return scene2;
    }
}
Ошибка происходит в функции:
Код:
holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("my", "onClick!");
                TransitionSet set = new TransitionSet();
                set.addTransition(new Fade());
                set.addTransition(new ChangeBounds());
                set.setOrdering(TransitionSet.ORDERING_TOGETHER);
                set.setDuration(500);
                set.setInterpolator(new AccelerateInterpolator());
                TransitionManager.go(scene2, set);
                Log.d("my", "endClick!");

                View v = LayoutInflater.from(scene2.getSceneRoot().getContext())
                        .inflate(R.layout.recycler_view_menu_item, scene2.getSceneRoot(), false);

                holder.InitializeScene2(v);

                holder.imageView.setImageResource(card_menu.get(position).mImage);
                holder.mName.setText(card_menu.get(position).mName);
                holder.mAmount.setText(card_menu.get(position).mAmount);
                holder.mData.setText(card_menu.get(position).mData);
                holder.mTime.setText(card_menu.get(position).mTime);
                holder.mAdd.setText(card_menu.get(position).mAdd);
                holder.mDel.setText(card_menu.get(position).mDel);
            }
        });
Ошибка:
Код:
Process: com.example.max.recyclerviewmenu, PID: 10574
                                                                                  java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null object reference
Уважаемые гуру программирования под Android, прошу помочь, а то мне нужно скоро вставить этот код в проект, а он не работает.
serSeventin вне форума Ответить с цитированием
Старый 11.12.2016, 20:02   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

А точно вот эта строка правильна ?

Код:
holder.imageView.setOnClickListener(new View.OnClickListener()
Может там вот так
Код:
holder.setOnClickListener(new View.OnClickListener()
или вот так
Код:
imageView.setOnClickListener(new View.OnClickListener()
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рисование сетки в QGraphics Scene stas135642 Visual C++ 2 02.05.2012 00:14
Помогите с GL Scene. Vitek enemy Помощь студентам 15 04.12.2007 21:02