diff --git a/app/src/main/java/io/neurolab/activities/MeditationHome.java b/app/src/main/java/io/neurolab/activities/MeditationHome.java index 49d7d3d7..e1f1484b 100644 --- a/app/src/main/java/io/neurolab/activities/MeditationHome.java +++ b/app/src/main/java/io/neurolab/activities/MeditationHome.java @@ -3,10 +3,16 @@ import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.CardView; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; + +import java.util.ArrayList; +import java.util.List; import io.neurolab.R; +import io.neurolab.adapters.MeditationCardAdapter; import io.neurolab.main.NeuroLab; +import io.neurolab.model.MeditationCardData; public class MeditationHome extends AppCompatActivity { @@ -19,19 +25,27 @@ protected void onCreate(Bundle savedInstanceState) { setTitle(R.string.meditation); getSupportActionBar().setDisplayHomeAsUpEnabled(true); - CardView happinessView = findViewById(R.id.happy_card); - CardView depressionView = findViewById(R.id.depression_card); - CardView sleepView = findViewById(R.id.sleep_card); - CardView travelView = findViewById(R.id.travel_card); - CardView shBreakView = findViewById(R.id.sh_break_card); - CardView lgBreakView = findViewById(R.id.lg_break_card); - - setMeditationCategoryIntent(happinessView); - setMeditationCategoryIntent(depressionView); - setMeditationCategoryIntent(sleepView); - setMeditationCategoryIntent(travelView); - setMeditationCategoryIntent(shBreakView); - setMeditationCategoryIntent(lgBreakView); + List cardData = new ArrayList<>(); + + cardData.add(new MeditationCardData(R.drawable.ic_happiness, "Happiness" , "Meditations while you are in a happy mood")); + cardData.add(new MeditationCardData(R.drawable.ic_depressed,"Depression" , "Meditations when you feel depressed")); + cardData.add(new MeditationCardData(R.drawable.ic_sleep,"Sleep" , "Meditations while having trouble in sleeping")); + cardData.add(new MeditationCardData(R.drawable.ic_travel,"Travel" , "Meditations when you are travelling")); + cardData.add(new MeditationCardData(R.drawable.ic_sh_break,"Short-Breaks" , "Meditations when you are on short breaks")); + cardData.add(new MeditationCardData(R.drawable.ic_lg_break,"Long-breaks" , "Meditations when you are on long breaks")); + + RecyclerView recycle = (RecyclerView) findViewById(R.id.recycle); + MeditationCardAdapter gridAdapter = new MeditationCardAdapter(this, cardData); + GridLayoutManager manager = new GridLayoutManager(this,2); + recycle.setLayoutManager(manager); + recycle.setAdapter(gridAdapter); + + manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + return gridAdapter.isHeader(position) ? manager.getSpanCount() : 1; + } + }); } @Override @@ -47,11 +61,5 @@ public void onBackPressed() { finish(); } - private void setMeditationCategoryIntent(CardView view) { - view.setOnClickListener(v -> { - startActivity(new Intent(MeditationHome.this, MeditationListActivity.class)); - finish(); - } - ); - } } + diff --git a/app/src/main/java/io/neurolab/adapters/MeditationCardAdapter.java b/app/src/main/java/io/neurolab/adapters/MeditationCardAdapter.java new file mode 100644 index 00000000..09ab1385 --- /dev/null +++ b/app/src/main/java/io/neurolab/adapters/MeditationCardAdapter.java @@ -0,0 +1,126 @@ +package io.neurolab.adapters; + +import android.content.Context; +import android.content.Intent; +import android.support.annotation.NonNull; +import android.support.v7.widget.CardView; +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; + +import io.neurolab.R; +import io.neurolab.activities.MeditationListActivity; +import io.neurolab.model.MeditationCardData; + +public class MeditationCardAdapter extends RecyclerView.Adapter{ + + private static final int TYPE_HEADER = 0; + private static final int TYPE_ITEM = 1; + + + private List mdata; + private Context mcxt; + + public MeditationCardAdapter(Context cxt, List data){ + this.mcxt=cxt; + this.mdata=data; + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (viewType == TYPE_ITEM) { + // Here Inflating recyclerview item layout + View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_meditation_cardlist_item, parent, false); + return new ItemViewHolder(itemView); + } + else if (viewType == TYPE_HEADER) { + // Here Inflating header view + View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_meditation_header_image, parent, false); + return new HeaderViewHolder(itemView); + } + else return null; + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + + + if (holder instanceof HeaderViewHolder){ + + HeaderViewHolder headerViewHolder = (HeaderViewHolder) holder; + + // You have to set your header items values with the help of model class and you can modify as per your needs + + headerViewHolder.mimage.setImageResource(R.drawable.meditation_bg); + + } + else if (holder instanceof ItemViewHolder){ + + final ItemViewHolder itemViewHolder = (ItemViewHolder) holder; + + itemViewHolder.mic.setImageResource(mdata.get(position-1).getIcon()); + itemViewHolder.mtext1.setText(mdata.get(position-1).getHead()); + itemViewHolder.mtext2.setText(mdata.get(position-1).getDesc()); + itemViewHolder.mcardView.setOnClickListener(v -> { + Intent intent = new Intent(mcxt , MeditationListActivity.class); + mcxt.startActivity(intent); + }); + + } + + } + + @Override + public int getItemViewType(int position) { + if (position == 0) { + return TYPE_HEADER; + } + return TYPE_ITEM; + } + + @Override + public int getItemCount() { + return mdata.size()+1; + } + + public boolean isHeader(int position) { + return position == 0; + } + + + private static class HeaderViewHolder extends RecyclerView.ViewHolder { + private ImageView mimage; + + public HeaderViewHolder(View view) { + super(view); + mimage=(ImageView) view.findViewById(R.id.image1); + + } + } + + public static class ItemViewHolder extends RecyclerView.ViewHolder{ + + private ImageView mic; + private TextView mtext1; + private TextView mtext2; + private CardView mcardView; + + public ItemViewHolder(@NonNull View itemView) { + super(itemView); + + mic=(ImageView) itemView.findViewById(R.id.icon2_0); + mtext1=(TextView) itemView.findViewById(R.id.text1); + mtext2=(TextView) itemView.findViewById(R.id.text2); + mcardView=(CardView) itemView.findViewById(R.id.cardview); + } + } + +} + + diff --git a/app/src/main/java/io/neurolab/model/MeditationCardData.java b/app/src/main/java/io/neurolab/model/MeditationCardData.java new file mode 100644 index 00000000..afafdd34 --- /dev/null +++ b/app/src/main/java/io/neurolab/model/MeditationCardData.java @@ -0,0 +1,28 @@ +package io.neurolab.model; + +public class MeditationCardData { + + private final int mIcon; + private final String mHead; + private final String mDesc; + + public MeditationCardData(int icon, String head, String desc) { + mIcon = icon; + mHead = head; + mDesc = desc; + } + + public int getIcon() { + return mIcon; + } + + public String getHead() { + return mHead; + } + + public String getDesc() { + return mDesc; + } +} + + diff --git a/app/src/main/res/layout/activity_meditation_cardlist_item.xml b/app/src/main/res/layout/activity_meditation_cardlist_item.xml new file mode 100644 index 00000000..e5f66dae --- /dev/null +++ b/app/src/main/res/layout/activity_meditation_cardlist_item.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_meditation_header_image.xml b/app/src/main/res/layout/activity_meditation_header_image.xml new file mode 100644 index 00000000..abc0b967 --- /dev/null +++ b/app/src/main/res/layout/activity_meditation_header_image.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_meditation_home.xml b/app/src/main/res/layout/activity_meditation_home.xml index 9836e263..fba4ce3e 100644 --- a/app/src/main/res/layout/activity_meditation_home.xml +++ b/app/src/main/res/layout/activity_meditation_home.xml @@ -1,368 +1,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + android:layout_height="match_parent" /> + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 2d2c7ff3..a82a448a 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.3' + classpath 'com.android.tools.build:gradle:4.1.0' // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle.properties b/gradle.properties index aac7c9b4..c79c8471 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,3 +15,4 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +android.useAndroidX=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d712c2a7..0a1b3b77 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Oct 12 13:39:44 IST 2019 +#Sat Dec 19 20:36:40 IST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip