Как открыть несколько разных активностей на утилитаре, чтобы просмотреть различные элементы, щелкнув с помощью метода if или case? - PullRequest
0 голосов
/ 15 апреля 2020

В настоящее время я использую вид рециркулятора во фрагменте. У меня есть 4 пункта в моем списке просмотра переработчика. Теперь я хочу открыть 4 новых действия, используя метод if / case. Но я могу открыть один вид деятельности и не могу открыть другой вид деятельности согласно их позициям. Вот мой код RecyclerViewAdapter java. Также, пожалуйста, дайте мне знать, как лучше открывать прослушиватель кликов.

    package com.kidslearning.course.adapter;

    import android.content.Context;
    import android.content.Intent;
    import android.media.Image;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;

    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.recyclerview.widget.RecyclerView;

    import com.kidslearning.course.NewHindiActivity;
    import com.kidslearning.course.R;
    import com.kidslearning.course.fragment.EnglishFragment;
    import com.kidslearning.course.fragment.HindiFragment;
    import com.kidslearning.course.fragment.MathFragment;
    import com.kidslearning.course.model.HindiFragmentModel;

    import java.util.List;

    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {

        Context mContext;
        List<HindiFragmentModel> mData;
        private MathFragment MathFragment;

        public RecyclerViewAdapter(Context mContext, List<HindiFragmentModel> mData) {
            this.mContext = mContext;
            this.mData = mData;
        }

        @NonNull
        @Override
        public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

            View v;
            v = LayoutInflater.from(mContext).inflate(R.layout.fragmentdesign,parent,false);
            MyViewHolder vHolder = new MyViewHolder(v);
            mContext = v.getContext();

            return vHolder;
        }

        @Override
        public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
            holder.tv_name.setText(mData.get(position).getName());
            holder.img.setImageResource(mData.get(position).getPhoto());

            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(v.getContext(), NewHindiActivity.class);
                    v.getContext().startActivity(intent);

       //now I want to open other activity by clicking on 2nd recycler view item.    

                }
            });

        }

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

        public static class MyViewHolder extends RecyclerView.ViewHolder {
            private TextView tv_name;
            private ImageView img;
            public MyViewHolder(@NonNull View itemView) {
                super(itemView);
                tv_name = (TextView) itemView.findViewById(R.id.titleView);
                img = (ImageView) itemView.findViewById(R.id.imageView);
            }

        }

    }

Ответы [ 3 ]

1 голос
/ 15 апреля 2020

вот ваш onClick() код

holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (position == 0) {
                    Intent intent = new Intent(v.getContext(), FirstActivity.class);
                    mContext.startActivity(intent);
                } else if (position == 1) {
                    Intent intent = new Intent(v.getContext(), SecondActivity.class);
                    mContext.startActivity(intent);
                } else if (position == 2) {
                    Intent intent = new Intent(v.getContext(), ThirdActivity.class);
                    mContext.startActivity(intent);
                } else if (position == 3) {
                    Intent intent = new Intent(v.getContext(), FourthActivity.class);
                    mContext.startActivity(intent);
                }


            }
        });
0 голосов
/ 15 апреля 2020

Если вы хотите не использовать if / case stategment, вы также можете добавить его на страницу назначения модели, например:

class HindiFragmentModel {
...
private Activity pageToGo;
...
public Activity getPageToGo() {
    return pageToGo; }

public void setPageToGo(Activity pageToGo) {
    this.pageToGo = pageToGo; }
}

Сеттер использует:

yourHindiFragmentModelObject.setPageToGo(new DestinationActivity())

И, наконец, в адаптер:

holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(v.getContext(), mData.get(position).getPageToGo().getClass());
            v.getContext().startActivity(intent);   
        }
    });
0 голосов
/ 15 апреля 2020

Добавьте этот код в onClick item

Intent intent;
    switch(position) {
        case 0:
            intent = new Intent(v.getContext(), NewHindiActivity.class);
            v.getContext().startActivity(intent);
        break;
        case 1:
            intent = new Intent(v.getContext(), SecondActivity.class);
            v.getContext().startActivity(intent);
            break;
        default:

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