diff --git a/app/build.gradle b/app/build.gradle
index b036fea..1d7e22a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -16,13 +16,20 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
}
dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ implementation 'android.arch.lifecycle:extensions:1.1.1'
+ implementation 'android.arch.lifecycle:viewmodel:1.1.1'
+ implementation project(':congressdataapiaccess-debug')
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26b1cb9..5f347ea 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,13 +2,17 @@
+
+
+
+ android:theme="@style/AppTheme"
+ android:usesCleartextTraffic="true">
@@ -16,6 +20,7 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CPDetailsRepo.java b/app/src/main/java/com/lambdaschool/congressdetails/CPDetailsRepo.java
new file mode 100644
index 0000000..2fb1ce2
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CPDetailsRepo.java
@@ -0,0 +1,16 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.MutableLiveData;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+
+
+public class CPDetailsRepo {
+ public static MutableLiveData getDetails(String id) {
+ final MutableLiveData liveDataList = new MutableLiveData<>();
+ CongresspersonDetails details = CongressDao.getMemberDetails(id);
+ liveDataList.setValue(details);
+ return liveDataList;
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CPDetailsViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/CPDetailsViewModel.java
new file mode 100644
index 0000000..518b6aa
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CPDetailsViewModel.java
@@ -0,0 +1,25 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.LiveData;
+import android.arch.lifecycle.MutableLiveData;
+import android.arch.lifecycle.ViewModel;
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+
+public class CPDetailsViewModel extends ViewModel {
+
+ private MutableLiveData liveDetails;
+
+ public LiveData getDetails(String id) {
+ if (liveDetails == null) {
+ loadData(id);
+ }
+ return liveDetails;
+ }
+
+ private void loadData(String id) {
+ liveDetails = CPDetailsRepo.getDetails(id);
+
+ }
+
+
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CPOverviewRepo.java b/app/src/main/java/com/lambdaschool/congressdetails/CPOverviewRepo.java
new file mode 100644
index 0000000..3440c95
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CPOverviewRepo.java
@@ -0,0 +1,18 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.MutableLiveData;
+import android.arch.lifecycle.ViewModel;
+
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
+
+public class CPOverviewRepo extends ViewModel {
+ public static MutableLiveData> getOverviewList() {
+ final MutableLiveData> liveDataList = new MutableLiveData<>();
+ ArrayList rawData = CongressDao.getAllMembers();
+ liveDataList.setValue(rawData);
+ return liveDataList;
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CPOverviewViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/CPOverviewViewModel.java
new file mode 100644
index 0000000..0918f8b
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CPOverviewViewModel.java
@@ -0,0 +1,27 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.LiveData;
+import android.arch.lifecycle.MutableLiveData;
+import android.arch.lifecycle.ViewModel;
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+public class CPOverviewViewModel extends ViewModel {
+ private MutableLiveData> overviewList;
+
+ public LiveData> getOverViewList() {
+ if (overviewList == null) {
+ loadList();
+ }
+
+
+ return overviewList;
+ }
+
+ private void loadList() {
+ overviewList = CPOverviewRepo.getOverviewList();
+ }
+
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/DetailsView.java b/app/src/main/java/com/lambdaschool/congressdetails/DetailsView.java
new file mode 100644
index 0000000..2b9e53c
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/DetailsView.java
@@ -0,0 +1,54 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.Observer;
+import android.arch.lifecycle.ViewModelProviders;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.util.Log;
+import android.widget.TextView;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+
+
+public class DetailsView extends AppCompatActivity {
+
+ TextView textName, textParty, textURL, textVotePercent;
+ CPDetailsViewModel viewModel;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_details_view);
+ textName = findViewById(R.id.text_name);
+ textParty = findViewById(R.id.text_party);
+ textURL = findViewById(R.id.text_url);
+// textVotePercent = findViewById(R.id.text_vote_with_party);
+
+
+ String id = getIntent().getStringExtra("CPID");
+
+ if (id != null) {
+ viewModel = ViewModelProviders.of(this).get(CPDetailsViewModel.class);
+ viewModel.getDetails(id).observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable CongresspersonDetails cpDetails) {
+ if (cpDetails != null) {
+ textName.setText(String.format("%s %s", cpDetails.getFirstName(), cpDetails.getLastName()));
+ String partyName = "";
+ partyName = cpDetails.getCurrentParty();
+ if (partyName.equals("R")) {
+ partyName = "Republican";
+ } else if (partyName.equals("D")) {
+ partyName = "Democrat";
+ }
+ textParty.setText(partyName);
+ textURL.setText(cpDetails.getUrl());
+ }
+ }
+ });
+ }
+
+
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
index 3b2296e..dcd2f57 100644
--- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
+++ b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
@@ -1,13 +1,75 @@
package com.lambdaschool.congressdetails;
+import android.arch.lifecycle.Observer;
+import android.content.Context;
+import android.content.Intent;
+import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+
+import android.arch.lifecycle.ViewModelProviders;
+
+import java.util.ArrayList;
+import java.util.Collections;
public class ListActivity extends AppCompatActivity {
+ LinearLayout parentLayout;
+ CPOverviewViewModel viewModel;
+ Context context;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
+
+ parentLayout = findViewById(R.id.parent_layout);
+ context = this;
+
+ viewModel = ViewModelProviders.of(this).get(CPOverviewViewModel.class);
+
+ viewModel.getOverViewList().observe(this, new Observer>() {
+ @Override
+ public void onChanged(@Nullable ArrayList cpOverviews) {
+ if (cpOverviews != null) {
+ Collections.sort(cpOverviews,
+ (o1, o2) -> o1.getState().compareTo(o2.getState()));
+ for (CongresspersonOverview person : cpOverviews) {
+ parentLayout.addView(getDefaultTextView(person));
+ }
+ }
+ }
+ });
+
+ }
+
+ TextView getDefaultTextView(final CongresspersonOverview person) {
+ TextView view = new TextView(context);
+ String displayText = String.format("%s %s (%s)", person.getFirstName(), person.getLastName(), person.getState());
+ view.setText(displayText);
+ view.setTextSize(28);
+ view.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String id = person.getId();
+ Log.i("CPID", id);
+
+ Intent intent = new Intent(context, DetailsView.class);
+ intent.putExtra("CPID",id);
+ startActivity(intent);
+ }
+ });
+ return view;
}
+
+
+
+
}
diff --git a/app/src/main/res/layout/activity_details_view.xml b/app/src/main/res/layout/activity_details_view.xml
new file mode 100644
index 0000000..6234f57
--- /dev/null
+++ b/app/src/main/res/layout/activity_details_view.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_list.xml b/app/src/main/res/layout/activity_list.xml
index 1884df2..f5a83b6 100644
--- a/app/src/main/res/layout/activity_list.xml
+++ b/app/src/main/res/layout/activity_list.xml
@@ -6,13 +6,16 @@
android:layout_height="match_parent"
tools:context=".ListActivity">
-
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 077cb2f..8d3ef8e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.1.4'
+ classpath 'com.android.tools.build:gradle:3.2.1'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 95d3e5f..441e1cd 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Sep 04 14:01:16 MDT 2018
+#Thu Nov 08 13:06:56 PST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip