Как я могу заставить каждое мероприятие открывать новые действия в программе повторного просмотра? - PullRequest
0 голосов
/ 27 января 2020

Я новичок в кодировании и использую комбинацию headfirst java и руководства для youtube для создания моего первого приложения. Я застрял, пытаясь заставить каждое событие открывать свои собственные мероприятия. В этот момент они открывают одну и ту же деятельность. Я реализовал onclicklistener и адаптер. Я ломал голову над тем, что мне не хватает.

Основная активность:


    package com.example.communityproject12;

    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;

    import android.app.Activity;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.service.autofill.OnClickAction;
    import android.util.Log;
    import android.view.Gravity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.ViewParent;
    import android.view.animation.AccelerateInterpolator;
    import android.widget.Button;
    import android.widget.ImageButton;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;

    import androidx.recyclerview.widget.LinearLayoutManager;
    import androidx.recyclerview.widget.LinearSnapHelper;
    import androidx.recyclerview.widget.RecyclerView;
    import androidx.recyclerview.widget.SnapHelper;

    import com.github.rubensousa.gravitysnaphelper.GravitySnapHelper;

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


    public class MainActivity extends AppCompatActivity implements EventAdapter.EventListener {


        RecyclerView eventsplace;
        EventAdapter eventAdapter;
        List<Event> eventList;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);




            eventsplace = findViewById(R.id.eventsplace);
            eventList = new ArrayList<>();
            eventList.add(

                    new Event(

                            "AA Meetings",
                            "Support Group",
                             R.drawable.hands

                    )
            );

            eventList.add(
                    new Event(
                            "Yuma Community Suicide Prevention",
                            "Support",
                            R.drawable.teaching

                    )
            );

            eventList.add(
                    new Event(
                            "Crisis Resources",
                            "Supports",
                            R.drawable.lonetree


                    )
            );


            eventList.add(
                    new Event(
                            "CODA Meetings",
                            "Support Group",

                            R.drawable.shoes
                    )
            );
            eventList.add(
                    new Event(
                            "NA Meetings",
                            "Support Group",
                            R.drawable.bamboo
                    )
            );

            eventList.add(
                    new Event(
                            "Veteran Resources",
                            "Support",
                            R.drawable.flag
                    )
            );



            eventList.add(
                    new Event(
                            "AzCH Community Forum",
                            "Event",
                            R.drawable.picnic
                    )
            );

            eventList.add(
                    new Event(
                            "Al-Anon Meetings",
                            "Support Group",
                            R.drawable.breathe
                    )
            );

            eventList.add(
                    new Event(
                            "Depression/Bipolar Alliance",
                            "Support Group",
                            R.drawable.sunrise
                    )
            );


            final LinearLayoutManager linearLayoutManager = new LinearLayoutManager
                    (this, LinearLayoutManager.HORIZONTAL, false);

            eventsplace.setLayoutManager(linearLayoutManager);
            eventsplace.setHasFixedSize(true);

            eventAdapter = new EventAdapter(this, eventList, this);
            eventsplace.setAdapter(eventAdapter);


            // snapping the scroll items
            final SnapHelper snapHelper = new GravitySnapHelper(Gravity.START);
            snapHelper.attachToRecyclerView(eventsplace);


            // set a timer for default item
            final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    // Do something after 1ms = 100ms
                    RecyclerView.ViewHolder viewHolderDefault = eventsplace.
                            findViewHolderForAdapterPosition(0);

                    LinearLayout eventparentDefault = viewHolderDefault.itemView.
                            findViewById(R.id.eventparent);
                    eventparentDefault.animate().scaleY(1).scaleX(1).setDuration(350).
                            setInterpolator(new AccelerateInterpolator()).start();

                    LinearLayout eventcategoryDefault = viewHolderDefault.itemView.
                            findViewById(R.id.eventbadge);
                    eventcategoryDefault.animate().alpha(1).setDuration(300).start();


                }
            }, 100);


            // add animate scroll
            eventsplace.addOnScrollListener(new RecyclerView.OnScrollListener() {
                @Override
                public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
                    super.onScrollStateChanged(recyclerView, newState);

                    if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                        View view = snapHelper.findSnapView(linearLayoutManager);
                        int pos = linearLayoutManager.getPosition(view);

                        RecyclerView.ViewHolder viewHolder =
                                eventsplace.findViewHolderForAdapterPosition(pos);

                        LinearLayout eventparent = viewHolder.itemView.findViewById(R.id.eventparent);
                        eventparent.animate().scaleY(1).scaleX(1).setDuration(350).
                                setInterpolator(new AccelerateInterpolator()).start();

                        LinearLayout eventcategory = viewHolder.itemView.
                                findViewById(R.id.eventbadge);
                        eventcategory.animate().alpha(1).setDuration(300).start();

                    } else {

                        View view = snapHelper.findSnapView(linearLayoutManager);
                        int pos = linearLayoutManager.getPosition(view);

                        RecyclerView.ViewHolder viewHolder =
                                eventsplace.findViewHolderForAdapterPosition(pos);

                        LinearLayout eventparent = viewHolder.itemView.findViewById(R.id.eventparent);
                        eventparent.animate().scaleY(0.7f).scaleX(0.7f).
                                setInterpolator(new AccelerateInterpolator()).setDuration(350).start();

                        LinearLayout eventcategory = viewHolder.itemView.
                                findViewById(R.id.eventbadge);
                        eventcategory.animate().alpha(0).setDuration(300).start();


                    }

            }


            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
            }
        });


    }

    @Override
    public void EventClick(int position) {
        eventList.get(position);
        Intent intent = new Intent(this, na.class);
        startActivity(intent);


    }

    public void SecondActivity(View view) {
    }

Адаптер:

package com.example.communityproject12;

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.List;

public class EventAdapter extends RecyclerView.Adapter<EventAdapter.EventViewHolder>{

    Context context;
    List<Event> eventList;
    EventListener mEventListener;



    public EventAdapter(Context context, List<Event> eventList, EventListener eventListener){
        this.context = context;
        this.eventList = eventList;
        this.mEventListener = eventListener;
    }

    @NonNull
    @Override
    public EventViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        LayoutInflater layoutInflater = LayoutInflater.from(context);
        View view = layoutInflater.inflate(R.layout.item_event, null);
        return new EventViewHolder(view, mEventListener);
    }


    @Override
    public void onBindViewHolder(@NonNull EventViewHolder eventViewHolder, int i) {

        Event event = eventList.get(i);


        eventViewHolder.eventtitle.setText(event.getEventtitle());
        eventViewHolder.eventcategory.setText(event.getEventcategory());
        eventViewHolder.eventpicture.setImageDrawable(context.getResources().
                getDrawable(event.getEventpicture()));


    }

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

    class EventViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

       TextView eventtitle, eventcategory;
       ImageView eventpicture;
       EventListener eventListener;

        public EventViewHolder(@NonNull View itemView, EventListener eventListener ) {
            super(itemView);

            eventtitle = itemView.findViewById(R.id.eventtitle);
            eventcategory = itemView.findViewById(R.id.eventcategory);
            eventpicture = itemView.findViewById(R.id.eventpicture);

            this.eventListener = eventListener;

            itemView.setOnClickListener(this);

        }

        @Override
        public void onClick(View v) {
            eventListener.EventClick(getAdapterPosition());

        }
    }

    public interface EventListener{
        void EventClick(int position);
    }

}

Событие:

package com.example.communityproject12;

import android.content.Intent;
import android.service.autofill.OnClickAction;
import android.view.View;

import androidx.core.content.ContextCompat;

import java.util.BitSet;

import static androidx.core.content.ContextCompat.startActivity;

public class Event {

    String eventtitle;
    String eventcategory;
    Integer eventpicture;

    public Event() {
    }

    public Event(String eventtitle, String eventcategory, Integer eventpicture) {
        this.eventtitle = eventtitle;
        this.eventcategory = eventcategory;
        this.eventpicture = eventpicture;

            }

    public String getEventtitle() {
        return eventtitle;
    }

    public void setEventtitle(String eventtitle) {
        this.eventtitle = eventtitle;
    }

    public String getEventcategory() {
        return eventcategory;
    }

    public void setEventcategory(String eventcategory) {
        this.eventcategory = eventcategory;
    }

    public Integer getEventpicture() {
        return eventpicture;
    }

    public void setEventpicture(Integer eventpicture) {
        this.eventpicture = eventpicture;
    }


}

1 Ответ

1 голос
/ 28 января 2020

Я наконец нашел решение:

Под адаптером

@ Override publi c void onClick (View v) {

        int clickedPosition = getAdapterPosition();
        mEventListener.EventClick(clickedPosition);

    }

Затем по основному виду деятельности:

case 0: mIntent = new Intent (MainActivity.this, SecondActivity.class); startActivity (mIntent); перерыв;

        case 1: mIntent  = new Intent (MainActivity.this, ycspc.class);
            startActivity (mIntent);
            break;
...