Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,7 @@ dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

//Added for transaction ui
implementation 'com.github.jaychang0917:SimpleRecyclerView:1.2.0'
}
11 changes: 8 additions & 3 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,17 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<activity android:name=".TransactionActivity">
</activity>
<activity android:name=".LoginActivity" android:label="@string/app_name"
android:noHistory="true" android:excludeFromRecents="true">
<activity android:name=".MainActivity"></activity>
<activity
android:name=".LoginActivity"
android:excludeFromRecents="true"
android:label="@string/app_name"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Expand Down
54 changes: 54 additions & 0 deletions app/src/main/java/com/kevinlu/watstats/RecyclerViewAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.kevinlu.watstats;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;

import com.jaychang.srv.SimpleCell;
import com.jaychang.srv.SimpleViewHolder;
import com.kevinlu.watstats.models.Transaction;

public class RecyclerViewAdapter extends SimpleCell<Transaction, RecyclerViewAdapter.ViewHolder>{

public RecyclerViewAdapter(@NonNull Transaction item) {
super(item);
}

protected int getLayoutRes() {
return R.layout.transaction_item;
}

@NonNull
@Override
protected ViewHolder onCreateViewHolder(ViewGroup parent, View cellView) {
return new ViewHolder(cellView);
}

@Override
protected void onBindViewHolder(@NonNull ViewHolder viewHolder, int i, @NonNull Context context, Object o) {
viewHolder.terminal.setText(getItem().getTerminal());
viewHolder.date.setText(getItem().getDateTime());
viewHolder.amount.setText(getItem().getAmount());
viewHolder.image.setImageResource(getItem().getImage());
}

public class ViewHolder extends SimpleViewHolder{
ImageView image;
TextView terminal;
TextView date;
TextView amount;

public ViewHolder(@NonNull View itemView) {
super(itemView);

image = itemView.findViewById(R.id.image);
terminal = itemView.findViewById(R.id.terminal);
date = itemView.findViewById(R.id.date);
amount = itemView.findViewById(R.id.amount);
}
}
}
124 changes: 124 additions & 0 deletions app/src/main/java/com/kevinlu/watstats/TransactionActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package com.kevinlu.watstats;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;

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

import com.jaychang.srv.SimpleRecyclerView;
import com.jaychang.srv.decoration.SectionHeaderProvider;
import com.jaychang.srv.decoration.SimpleSectionHeaderProvider;
import com.kevinlu.watstats.models.Date;
import com.kevinlu.watstats.models.Transaction;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class TransactionActivity extends AppCompatActivity {

SimpleRecyclerView simpleRecyclerView;

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

simpleRecyclerView=findViewById(R.id.account_transactions);
this.addRecyclerHeaders();
this.bindData();
}

//Adds the headers to the recycler view
private void addRecyclerHeaders()
{
SectionHeaderProvider<Transaction> header = new SimpleSectionHeaderProvider<Transaction>() {
@NonNull
@Override
public View getSectionHeaderView(@NonNull Transaction transaction, int i) {
View view = LayoutInflater.from(TransactionActivity.this).inflate(R.layout.header_transactions, null, false);
TextView textView = view.findViewById(R.id.header_name);
textView.setText(transaction.getDate());
return view;
}

//Checks if next transaction is listed under same heading as current transaction
@Override
public boolean isSameSection(@NonNull Transaction transaction, @NonNull Transaction nextTransaction) {
return transaction.getDateID() == nextTransaction.getDateID();
}

//For sticky headers
@Override
public boolean isSticky() {
return true;
}
};
simpleRecyclerView.setSectionHeader(header);
}

//function adds each transaction to recycler view
private void bindData()
{
List<Transaction> transaction_list = getData();

//Sort transactions in order
Collections.sort(transaction_list, (transaction, nextTransaction) -> transaction.getDateID() - nextTransaction.getDateID());

List<RecyclerViewAdapter> cells = new ArrayList<>();

//Iterates through list of transactions
for (Transaction transaction : transaction_list) {
RecyclerViewAdapter cell = new RecyclerViewAdapter(transaction);
cells.add(cell);
}

simpleRecyclerView.addCells(cells);
}

//function to get list of transactions (currently hardcoded)
private ArrayList<Transaction> getData() {

//List of transaction
ArrayList<Transaction> transaction_list = new ArrayList<>();

//Get list of unique dates (for headings) and initialize here
Date today = new Date(0, "Today");
Date yesterday = new Date(1, "Yesterday");
Date december23 = new Date(2, "23 December");

//Get list of transactions and add transaction_list
Transaction t = new Transaction("Mudies", R.drawable.ic_mealplan, "-$5.30",
"12/25/2019 5:00 PM", today);
transaction_list.add(t);

t = new Transaction("CMH", R.drawable.ic_mealplan, "-$12.30",
"12/25/2019 3:20 PM", today);
transaction_list.add(t);

t = new Transaction("V1 Laundry", R.drawable.ic_flexdollar, "-$1.00",
"12/24/2019 10:00 PM", yesterday);
transaction_list.add(t);

t = new Transaction("SLC", R.drawable.ic_mealplan, "-$11.50",
"12/24/2019 1:00 PM", yesterday);
transaction_list.add(t);

t = new Transaction("WatCard", R.drawable.ic_transfer, "+$50.00",
"12/24/2019 12:00 PM", yesterday);
transaction_list.add(t);

t = new Transaction("WStore", R.drawable.ic_flexdollar, "-$2.50",
"12/23/2019 10:00 PM", december23);
transaction_list.add(t);

t = new Transaction("The Market", R.drawable.ic_mealplan, "-$20.20",
"12/23/2019 4:20 AM", december23);
transaction_list.add(t);

return transaction_list;
}
}
20 changes: 20 additions & 0 deletions app/src/main/java/com/kevinlu/watstats/models/Date.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.kevinlu.watstats.models;

//Class for date (category) for listing transactions under appropriate headings
public class Date {
int id;
String date;

public Date(int id, String date) {
this.id = id;
this.date = date;
}

public int getId() {
return id;
}

public String getDate() {
return date;
}
}
42 changes: 42 additions & 0 deletions app/src/main/java/com/kevinlu/watstats/models/Transaction.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.kevinlu.watstats.models;

//Class for a transactions which includes this data
public class Transaction {
private String terminal;
private int image;
private String amount;
private Date dateCategory; //used with Date class for headings
private String dateTime; //The actual text of date and time to output

public Transaction(String terminal, int image, String amount, String dateTime, Date dateCategory) {
this.terminal = terminal;
this.image = image;
this.amount = amount;
this.dateCategory = dateCategory;
this.dateTime = dateTime;
}

public String getTerminal() {
return terminal;
}

public int getImage() {
return image;
}

public String getAmount() {
return amount;
}

public String getDateTime() {
return dateTime;
}

public int getDateID() {
return dateCategory.getId();
}

public String getDate() {
return dateCategory.getDate();
}
}
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/two_rounded_corners.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<solid android:color="@color/halfway" />

<corners android:radius="1dp" android:topLeftRadius="20dp" android:topRightRadius="20dp" android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp"/>

</shape>
55 changes: 55 additions & 0 deletions app/src/main/res/layout/activity_transaction.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black">

<TextView
android:id="@+id/total_spent_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:layout_marginStart="36dp"
android:textColor="@color/white"
android:textSize="@dimen/balanceDescTextSize"
android:text="Total spent in" />

<TextView
android:id="@+id/total_spent_month"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/total_spent_text"
android:layout_marginTop="36dp"
android:layout_marginLeft="5dp"
android:textColor="@color/white"
android:text="December"
android:textSize="20sp" />

<TextView
android:id="@+id/total_balance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="36dp"
android:layout_below="@+id/total_spent_text"
android:textSize="@dimen/balanceTextSize"
android:textStyle="bold"
android:textColor="@color/white"
android:text="$254.98"/>

<com.jaychang.srv.SimpleRecyclerView
android:id="@+id/account_transactions"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/total_balance"
android:layout_marginTop="30dp"
android:background="@drawable/two_rounded_corners"
android:backgroundTint="#FFFFFF"
android:clipToPadding="false"
android:foregroundGravity="center"
android:overScrollMode="never">

</com.jaychang.srv.SimpleRecyclerView>

</RelativeLayout>
26 changes: 26 additions & 0 deletions app/src/main/res/layout/header_transactions.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/two_rounded_corners"
android:backgroundTint="@color/white">

<TextView
android:id="@+id/header_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="22dp"
android:textStyle="bold"
android:textColor="@color/black"
android:textSize="20sp"
android:text="Today"/>

<View
android:id="@+id/bar"
android:layout_width="match_parent"
android:layout_centerVertical="true"
android:layout_marginRight="22dp"
android:layout_toRightOf="@+id/header_name"
android:layout_height="3dp"
android:background="@android:color/darker_gray"/>
</RelativeLayout>
Loading