diff --git a/app/build.gradle b/app/build.gradle
index b036fea..9bf0476 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -25,4 +25,7 @@ dependencies {
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..9c1e86f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,8 +1,10 @@
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonOverviewViewmodel.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonOverviewViewmodel.java
new file mode 100644
index 0000000..3aeb961
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonOverviewViewmodel.java
@@ -0,0 +1,26 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.LiveData;
+import android.arch.lifecycle.MutableLiveData;
+import android.arch.lifecycle.ViewModel;
+import android.util.Log;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
+
+public class CongressPersonOverviewViewmodel extends ViewModel {
+ private MutableLiveData> congressList;
+
+ public LiveData> getCongressList(){
+ if(congressList == null){
+ Log.i("LOADLIST", "list is loaded");
+ loadList();
+ }
+ return congressList;
+ }
+
+ private void loadList(){
+ congressList = CongresspersonOverviewRepo.getOverviewList();
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsActivity.java
new file mode 100644
index 0000000..49d6a93
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsActivity.java
@@ -0,0 +1,48 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.LiveData;
+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.widget.TextView;
+
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+
+public class CongresspersonDetailsActivity extends AppCompatActivity {
+
+ TextView name, party, state, totalVotes;
+ CongresspersonDetailsViewModel viewModel;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_congressperson_details);
+ name = findViewById(R.id.name);
+ party = findViewById(R.id.party);
+ state = findViewById(R.id.state);
+ totalVotes = findViewById(R.id.votes);
+
+ String id = getIntent().getStringExtra("PersonId");
+ final String stateString = getIntent().getStringExtra("PersonState");
+ final String totalVotesNumber = getIntent().getStringExtra("PersonVotes");
+
+ if(id != null && stateString != null && totalVotesNumber != null){
+ viewModel = ViewModelProviders.of(this).get(CongresspersonDetailsViewModel.class);
+ LiveData liveDetails = viewModel.getDetails(id);
+ liveDetails.observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable CongresspersonDetails congresspersonDetails) {
+ if(congresspersonDetails != null){
+ name.setText(congresspersonDetails.getFirstName() + " " + congresspersonDetails.getLastName());
+ party.setText(congresspersonDetails.getCurrentParty());
+ state.setText(stateString);
+ totalVotes.setText(totalVotesNumber);
+ }
+ }
+ });
+ }
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsRepo.java b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsRepo.java
new file mode 100644
index 0000000..54e42ca
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsRepo.java
@@ -0,0 +1,17 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.MutableLiveData;
+
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+
+import java.util.ArrayList;
+
+public class CongresspersonDetailsRepo {
+ public static MutableLiveData getDetails(String id){
+ final MutableLiveData liveDataList = new MutableLiveData<>();
+ CongresspersonDetails profile = CongressDao.getMemberDetails(id);
+ liveDataList.setValue(profile);
+ return liveDataList;
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsViewModel.java
new file mode 100644
index 0000000..d6a9f8d
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailsViewModel.java
@@ -0,0 +1,24 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.LiveData;
+import android.arch.lifecycle.MutableLiveData;
+import android.arch.lifecycle.ViewModel;
+
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+
+public class CongresspersonDetailsViewModel extends ViewModel {
+
+ private MutableLiveData liveDetails;
+
+ public LiveData getDetails(String id){
+ if(liveDetails == null){
+ loadData(id);
+ }
+ return liveDetails;
+ }
+
+ public void loadData(String id) {
+ liveDetails = CongresspersonDetailsRepo.getDetails(id);
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java
new file mode 100644
index 0000000..84c353f
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java
@@ -0,0 +1,20 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.MutableLiveData;
+import android.util.Log;
+
+import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
+
+public class CongresspersonOverviewRepo {
+
+ 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/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
index 3b2296e..697f0d6 100644
--- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
+++ b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
@@ -1,13 +1,73 @@
package com.lambdaschool.congressdetails;
+import android.arch.lifecycle.Observer;
+import android.arch.lifecycle.ViewModelProviders;
+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.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
public class ListActivity extends AppCompatActivity {
+ LinearLayout parentLayout;
+ CongressPersonOverviewViewmodel viewModel;
+ Context context;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
+ context = this;
+ parentLayout = findViewById(R.id.parent_layout);
+ viewModel = ViewModelProviders.of(this).get(CongressPersonOverviewViewmodel.class);
+ viewModel.getCongressList().observe(this, new Observer>() {
+ @Override
+ public void onChanged(@Nullable ArrayList congresspersonOverviews) {
+ if (congresspersonOverviews != null) {
+ for (final CongresspersonOverview c : congresspersonOverviews) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ parentLayout.addView(getDefaultTextView(c));
+ }
+ });
+
+ }
+ }
+ }
+ });
+ }
+
+ TextView getDefaultTextView(final CongresspersonOverview congress) {
+ TextView view = new TextView(context);
+ final String fName = congress.getFirstName();
+ final String lName = congress.getLastName();
+ final String state = congress.getState();
+ final String party = congress.getParty();
+ String displayText = String.format("%s, %s - %s (%s)", lName, fName, party, state);
+ view.setText(displayText);
+ view.setTextSize(28);
+ view.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String id = congress.getId();
+ String votes = Integer.toString(congress.getTotalVotes());
+ Intent intent = new Intent(context, CongresspersonDetailsActivity.class);
+ intent.putExtra("PersonId", id);
+ intent.putExtra("PersonState", state);
+ intent.putExtra("PersonVotes", votes);
+ startActivity(intent);
+ }
+ });
+ return view;
}
}
diff --git a/app/src/main/res/layout/activity_congressperson_details.xml b/app/src/main/res/layout/activity_congressperson_details.xml
new file mode 100644
index 0000000..8af3961
--- /dev/null
+++ b/app/src/main/res/layout/activity_congressperson_details.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
\ 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