diff --git a/.idea/externalDependencies.xml b/.idea/externalDependencies.xml
new file mode 100644
index 0000000..180eacb
--- /dev/null
+++ b/.idea/externalDependencies.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 0b6820d..e19679b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -20,10 +20,13 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
- implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
+ implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
implementation project(':congressdataapiaccess-debug')
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
+ implementation project(':congressdataapiaccess-debug')
+ implementation 'android.arch.lifecycle:extensions:1.1.1'
+ implementation 'android.arch.lifecycle:viewmodel:1.1.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26b1cb9..6aa7055 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,6 +2,8 @@
+
+
-
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
deleted file mode 100644
index 8be745a..0000000
--- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.lambdaschool.congressdetails;
-
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
-
-import com.lambdaschool.congressdataapiaccess.CongressDao;
-
-
-public class ListActivity extends AppCompatActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_list);
-
- CongressDao.getAllMembers();
- }
-}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/activities/DetailCongressPerson.java b/app/src/main/java/com/lambdaschool/congressdetails/activities/DetailCongressPerson.java
new file mode 100644
index 0000000..64084e1
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/activities/DetailCongressPerson.java
@@ -0,0 +1,47 @@
+package com.lambdaschool.congressdetails.activities;
+
+import android.arch.lifecycle.Observer;
+import android.arch.lifecycle.ViewModelProviders;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.widget.TextView;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+import com.lambdaschool.congressdetails.R;
+import com.lambdaschool.congressdetails.viewModel.DetailCongressPersonViewModel;
+
+public class DetailCongressPerson extends AppCompatActivity {
+
+ DetailCongressPersonViewModel viewModel;
+ TextView name;
+ TextView dateOfBirth;
+ TextView gender;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_detail_congress_person);
+
+ name = findViewById(R.id.textViewName);
+ dateOfBirth = findViewById(R.id.textViewDateOfBirth);
+ gender = findViewById(R.id.textViewGender);
+
+ String congressPersonId = getIntent().getStringExtra(ListActivity.CONGRESS_PERSON_ID);
+ if (congressPersonId != null && congressPersonId != "") {
+ viewModel = ViewModelProviders.of(this).get(DetailCongressPersonViewModel.class);
+ viewModel.getDetails(congressPersonId).observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable CongresspersonDetails congresspersonDetails) {
+ if (congresspersonDetails != null) {
+ name.setText(new StringBuilder().append(congresspersonDetails.getFirstName()).append(" ").append(congresspersonDetails.getLastName()).toString());
+ dateOfBirth.setText(new StringBuilder().append("Born: ").append(congresspersonDetails.getDateOfBirth()).toString());
+ gender.setText(new StringBuilder().append("Gender: ").append(congresspersonDetails.getGender()).toString());
+ }
+ }
+ });
+ }
+
+ }
+
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/activities/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/activities/ListActivity.java
new file mode 100644
index 0000000..c47807d
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/activities/ListActivity.java
@@ -0,0 +1,71 @@
+package com.lambdaschool.congressdetails.activities;
+
+import android.arch.lifecycle.Observer;
+import android.arch.lifecycle.ViewModelProviders;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+import com.lambdaschool.congressdetails.R;
+import com.lambdaschool.congressdetails.viewModel.CongressOverviewViewModel;
+
+import java.util.ArrayList;
+
+
+public class ListActivity extends AppCompatActivity {
+
+ public static final String CONGRESS_PERSON_ID = "person_id";
+ Context context;
+ CongressOverviewViewModel viewModel;
+ LinearLayout parentLayout;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_list);
+
+ context = this;
+ parentLayout = findViewById(R.id.parentlayout);
+
+ viewModel = ViewModelProviders.of(this).get(CongressOverviewViewModel.class);
+ viewModel.getOverView().observe(this, new Observer>() {
+ @Override
+ public void onChanged(@Nullable ArrayList congresspersonOverviews) {
+ if (congresspersonOverviews != null) {
+ for (CongresspersonOverview person : congresspersonOverviews) {
+ parentLayout.addView(getDefaultTextView(person));
+
+ }
+ }
+ }
+ });
+
+ CongressDao.getAllMembers();
+ }
+
+ TextView getDefaultTextView(final CongresspersonOverview person) {
+ TextView view = new TextView(context);
+ String personName = new StringBuilder().append(person.getFirstName()).append(" ").append(person.getLastName()).append("\n").append(person.getParty()).append("-").append(person.getState()).toString();
+ final String idTag = person.getId();
+ view.setTag(idTag);
+ view.setText(personName);
+ view.setTextSize(28);
+ view.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intentCongressPerson = new Intent(context, DetailCongressPerson.class);
+ intentCongressPerson.putExtra(CONGRESS_PERSON_ID, idTag);
+ startActivity(intentCongressPerson);
+ }
+ });
+
+ return view;
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/repo/CongressPersonOverviewRepository.java b/app/src/main/java/com/lambdaschool/congressdetails/repo/CongressPersonOverviewRepository.java
new file mode 100644
index 0000000..e34abea
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/repo/CongressPersonOverviewRepository.java
@@ -0,0 +1,18 @@
+package com.lambdaschool.congressdetails.repo;
+
+import android.arch.lifecycle.MutableLiveData;
+
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
+
+public class CongressPersonOverviewRepository {
+
+ public static MutableLiveData> getOverList() {
+ MutableLiveData> liveData = new MutableLiveData<>();
+ ArrayList rawData = CongressDao.getAllMembers();
+ liveData.setValue(rawData);
+ return liveData;
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/repo/DetailCongressPersonRepo.java b/app/src/main/java/com/lambdaschool/congressdetails/repo/DetailCongressPersonRepo.java
new file mode 100644
index 0000000..5da95d4
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/repo/DetailCongressPersonRepo.java
@@ -0,0 +1,16 @@
+package com.lambdaschool.congressdetails.repo;
+
+import android.arch.lifecycle.MutableLiveData;
+
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+
+public class DetailCongressPersonRepo {
+
+ public static MutableLiveData getDetails(String id) {
+ final MutableLiveData liveData = new MutableLiveData<>();
+ CongresspersonDetails profile = CongressDao.getMemberDetails(id);
+ liveData.setValue(profile);
+ return liveData;
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/viewModel/CongressOverviewViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/viewModel/CongressOverviewViewModel.java
new file mode 100644
index 0000000..38d3f91
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/viewModel/CongressOverviewViewModel.java
@@ -0,0 +1,25 @@
+package com.lambdaschool.congressdetails.viewModel;
+
+import android.arch.lifecycle.MutableLiveData;
+import android.arch.lifecycle.ViewModel;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+import com.lambdaschool.congressdetails.repo.CongressPersonOverviewRepository;
+
+import java.util.ArrayList;
+
+public class CongressOverviewViewModel extends ViewModel {
+
+ private MutableLiveData> overviewList;
+
+ public MutableLiveData> getOverView() {
+ if (overviewList == null) {
+ load();
+ }
+ return overviewList;
+ }
+
+ private void load() {
+ overviewList = CongressPersonOverviewRepository.getOverList();
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/viewModel/DetailCongressPersonViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/viewModel/DetailCongressPersonViewModel.java
new file mode 100644
index 0000000..a464f78
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/viewModel/DetailCongressPersonViewModel.java
@@ -0,0 +1,23 @@
+package com.lambdaschool.congressdetails.viewModel;
+
+import android.arch.lifecycle.LiveData;
+import android.arch.lifecycle.MutableLiveData;
+import android.arch.lifecycle.ViewModel;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+import com.lambdaschool.congressdetails.repo.DetailCongressPersonRepo;
+
+public class DetailCongressPersonViewModel extends ViewModel {
+ private MutableLiveData liveData;
+
+ public LiveData getDetails(String id) {
+ if (liveData == null) {
+ loadData(id);
+ }
+ return liveData;
+ }
+
+ private void loadData(String id) {
+ liveData = DetailCongressPersonRepo.getDetails(id);
+ }
+}
diff --git a/app/src/main/res/layout/activity_detail_congress_person.xml b/app/src/main/res/layout/activity_detail_congress_person.xml
new file mode 100644
index 0000000..ca87479
--- /dev/null
+++ b/app/src/main/res/layout/activity_detail_congress_person.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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..4cf6d19 100644
--- a/app/src/main/res/layout/activity_list.xml
+++ b/app/src/main/res/layout/activity_list.xml
@@ -1,18 +1,24 @@
-
+ android:orientation="vertical"
+ tools:context=".activities.ListActivity">
-
+ android:layout_margin="@dimen/margin">
-
\ No newline at end of file
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000..8de3b77
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@
+
+
+ 24sp
+ 8dp
+
\ 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..3c7c257 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
+#Sun Nov 11 07:55:31 CST 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