Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

Ответ
 
Опции темы
Старый 11.12.2016, 19:27   #1
serSeventin
Новичок
 
Регистрация: 11.12.2016
Сообщений: 1
Репутация: 10
По умолчанию 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, 21:02   #2
pompiduskus
юзер как все
Профессионал
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Адрес: земля
Сообщений: 1,347
Репутация: 535

icq: 446.452.423
По умолчанию

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

Код:

holder.imageView.setOnClickListener(new View.OnClickListener()

Может там вот так
Код:

holder.setOnClickListener(new View.OnClickListener()

или вот так
Код:

imageView.setOnClickListener(new View.OnClickListener()

__________________
<Дзен - Вся вселенная в тебе > | <Рай - это всего лишь мечта терпящего страдания ада> | github.com/ch3ll0v3k
pompiduskus вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




13:46.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru