diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
deleted file mode 100644
index 30aa626..0000000
--- a/.idea/codeStyles/Project.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 0b6820d..b971a12 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -26,4 +26,7 @@ dependencies {
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 'com.android.support:recyclerview-v7:28.0.0'
+ implementation 'com.android.support:cardview-v7:28.0.0'
+ implementation 'android.arch.lifecycle:extensions:1.1.1'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 26b1cb9..57dba39 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,6 +2,8 @@
+
+
+
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongressPeopleListAdapter.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressPeopleListAdapter.java
new file mode 100644
index 0000000..b2083cb
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressPeopleListAdapter.java
@@ -0,0 +1,86 @@
+package com.lambdaschool.congressdetails;
+
+import android.content.Intent;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
+
+public class CongressPeopleListAdapter extends RecyclerView.Adapter {
+ ArrayList dataList;
+
+ public CongressPeopleListAdapter(ArrayList dataList) {
+ this.dataList = dataList;
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
+ View itemView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.congress_people_list_item, viewGroup, false);
+ return new ViewHolder(itemView);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull final ViewHolder vh, int i) {
+ final CongresspersonOverview data = dataList.get(i);
+ String displayDOB = "DOB: " + data.getDateOfBirth();
+ String displayGender = "Gender: " + data.getGender();
+ String displayState = "State: " + data.getState();
+ String displayFacebook = "Facebook: " + data.getFacebookAccount();
+ String displayTwitter = "Twitter: " + data.getTwitterAccount();
+ String displayYoutube = "Youtube: " + data.getYoutubeAccount();
+ String displayTitle = data.getShortTitle() + " " + data.getFirstName() + " " + data.getLastName();
+
+ vh.textDOB.setText(displayDOB);
+ vh.textFacebook.setText(displayFacebook);
+ vh.textGender.setText(displayGender);
+ vh.textParty.setText(data.getParty());
+ vh.textState.setText(displayState);
+ vh.textTwitter.setText(displayTwitter);
+ vh.textYoutube.setText(displayYoutube);
+ vh.textTitle.setText(displayTitle);
+ vh.parent.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(vh.parent.getContext(), DetailsActivity.class);
+ intent.putExtra(CongressRepository.CONGRESS_INTENT_KEY, data.getId());
+ vh.parent.getContext().startActivity(intent);
+ }
+ });
+ }
+
+ @Override
+ public int getItemCount() {
+ return dataList.size();
+ }
+
+ public class ViewHolder extends RecyclerView.ViewHolder {
+ TextView textTitle;
+ TextView textParty;
+ TextView textDOB;
+ TextView textGender;
+ TextView textState;
+ TextView textFacebook;
+ TextView textTwitter;
+ TextView textYoutube;
+ View parent;
+ public ViewHolder(@NonNull View itemView) {
+ super(itemView);
+ parent = itemView.findViewById(R.id.parent);
+ textTitle = itemView.findViewById(R.id.text_title);
+ textParty = itemView.findViewById(R.id.text_party);
+ textDOB = itemView.findViewById(R.id.text_dob);
+ textGender = itemView.findViewById(R.id.text_gender);
+ textState = itemView.findViewById(R.id.text_state);
+ textFacebook = itemView.findViewById(R.id.text_facebook);
+ textTwitter = itemView.findViewById(R.id.text_twitter);
+ textYoutube = itemView.findViewById(R.id.text_youtube);
+ }
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonRepository.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonRepository.java
new file mode 100644
index 0000000..d2a77dd
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonRepository.java
@@ -0,0 +1,24 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.MutableLiveData;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
+
+public class CongressPersonRepository {
+ private CongresspersonDetails data;
+
+ public CongressPersonRepository() {
+ data = new CongresspersonDetails();
+ }
+
+ public CongresspersonDetails updateData(CongresspersonDetails person){
+ data = person;
+ return data;
+ }
+
+ public MutableLiveData getData(){
+ MutableLiveData liveData = new MutableLiveData<>();
+ liveData.setValue(data);
+ return liveData;
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonViewModel.java
new file mode 100644
index 0000000..5f6089a
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressPersonViewModel.java
@@ -0,0 +1,28 @@
+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 CongressPersonViewModel extends ViewModel {
+ private MutableLiveData data;
+ private CongressPersonRepository repo;
+
+ public LiveData getPerson(){
+ if(data == null){
+ loadData();
+ }
+ return data;
+ }
+
+ private void loadData(){
+ repo = new CongressPersonRepository();
+ data = repo.getData();
+ }
+
+ public void updateData(CongresspersonDetails person){
+ data.setValue(repo.updateData(person));
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java
new file mode 100644
index 0000000..dc164f5
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java
@@ -0,0 +1,28 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.MutableLiveData;
+
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
+
+public class CongressRepository {
+ public static final String CONGRESS_INTENT_KEY = "Person";
+ private ArrayList data;
+
+ public CongressRepository() {
+ data = new ArrayList<>();
+ }
+
+ public ArrayList UpdateData(CongresspersonOverview person){
+ data.add(person);
+ return data;
+ }
+
+ public MutableLiveData> getData (){
+ MutableLiveData> liveData = new MutableLiveData<>();
+ liveData.setValue(data);
+
+ return liveData;
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongressViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressViewModel.java
new file mode 100644
index 0000000..6f157fc
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressViewModel.java
@@ -0,0 +1,30 @@
+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;
+
+public class CongressViewModel extends ViewModel {
+ private MutableLiveData> data;
+ private CongressRepository repo;
+
+ public LiveData> getCongress(){
+ if(data == null){
+ loadData();
+ }
+ return data;
+ }
+
+ private void loadData(){
+ repo = new CongressRepository();
+ data = repo.getData();
+ }
+
+ public void updateData(CongresspersonOverview person){
+ data.setValue(repo.UpdateData(person));
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java
new file mode 100644
index 0000000..7ff469d
--- /dev/null
+++ b/app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java
@@ -0,0 +1,79 @@
+package com.lambdaschool.congressdetails;
+
+import android.arch.lifecycle.Observer;
+import android.arch.lifecycle.ViewModelProviders;
+import android.content.Intent;
+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;
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+public class DetailsActivity extends AppCompatActivity {
+
+ TextView textTitle;
+ TextView textParty;
+ TextView textDOB;
+ TextView textWebsite;
+ TextView textTrackId;
+ TextView textTwitter;
+ TextView textFacebook;
+ CongresspersonDetails person;
+ CongressPersonViewModel viewModel;
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_details);
+
+ viewModel = ViewModelProviders.of(this).get(CongressPersonViewModel.class);
+ viewModel.getPerson().observe(this, new Observer() {
+ @Override
+ public void onChanged(@Nullable CongresspersonDetails congresspersonDetails) {
+ person = congresspersonDetails;
+ updateUI(person);
+ }
+ });
+
+ Intent intent = getIntent();
+ if(intent.getExtras() != null){
+ final String personId = intent.getStringExtra(CongressRepository.CONGRESS_INTENT_KEY);
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ final CongresspersonDetails networkPerson = CongressDao.getMemberDetails(personId);
+
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ viewModel.updateData(networkPerson);
+ }
+ });
+ }
+ }).start();
+ }
+
+ textTitle = findViewById(R.id.text_title);
+ textParty = findViewById(R.id.text_party);
+ textDOB = findViewById(R.id.text_dob);
+ textWebsite = findViewById(R.id.text_website);
+ textTrackId = findViewById(R.id.text_track_id);
+ textTwitter = findViewById(R.id.text_twitter);
+ textFacebook = findViewById(R.id.text_facebook);
+ }
+
+ private void updateUI(CongresspersonDetails person){
+ textTitle.setText(String.format("%s %s", person.getFirstName(), person.getLastName()));
+ textParty.setText(String.format("Party: %s", person.getCurrentParty()));
+ textDOB.setText(String.format("Date of Birth: %s", person.getDateOfBirth()));
+ textWebsite.setText(String.format("Website: %s", person.getUrl()));
+ textTrackId.setText(String.format("Gov Track ID: %s", person.getGovtrackId()));
+ textTwitter.setText(String.format("Twitter: %s", person.getTwitterAccount()));
+ textFacebook.setText(String.format("Facebook: %s", person.getFacebookAccount()));
+
+ }
+}
diff --git a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
index 8be745a..d791173 100644
--- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
+++ b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java
@@ -1,18 +1,66 @@
package com.lambdaschool.congressdetails;
+import android.arch.lifecycle.Observer;
+import android.arch.lifecycle.ViewModelProviders;
+import android.content.Context;
+import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
import com.lambdaschool.congressdataapiaccess.CongressDao;
+import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;
+
+import java.util.ArrayList;
public class ListActivity extends AppCompatActivity {
+ ArrayList congressPeople;
+ CongressPeopleListAdapter listAdapter;
+ Context context;
+ private CongressViewModel viewModel;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
+ context = this;
+ congressPeople = new ArrayList<>();
+ listAdapter = new CongressPeopleListAdapter(congressPeople);
+ RecyclerView recyclerView = findViewById(R.id.recycler_view);
+ recyclerView.setAdapter(listAdapter);
+ recyclerView.setLayoutManager(new LinearLayoutManager(context));
+ viewModel = ViewModelProviders.of(this).get(CongressViewModel.class);
+ viewModel.getCongress().observe(this, new Observer>() {
+ @Override
+ public void onChanged(@Nullable ArrayList congresspersonOverviews) {
+ if(congresspersonOverviews != null) {
+ for(CongresspersonOverview person: congresspersonOverviews){
+ if(!congressPeople.contains(person)) {
+ congressPeople.add(person);
+ }
+ }
+ }
+ listAdapter.notifyDataSetChanged();
+ }
+ });
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ final ArrayList networkList = CongressDao.getAllMembers();
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ for(CongresspersonOverview person: networkList){
+ viewModel.updateData(person);
+
+ }
+ }
+ });
+ }
+ }).start();
- CongressDao.getAllMembers();
}
}
diff --git a/app/src/main/res/layout/activity_details.xml b/app/src/main/res/layout/activity_details.xml
new file mode 100644
index 0000000..96bef3c
--- /dev/null
+++ b/app/src/main/res/layout/activity_details.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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..ec28d23 100644
--- a/app/src/main/res/layout/activity_list.xml
+++ b/app/src/main/res/layout/activity_list.xml
@@ -6,13 +6,11 @@
android:layout_height="match_parent"
tools:context=".ListActivity">
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/congress_people_list_item.xml b/app/src/main/res/layout/congress_people_list_item.xml
new file mode 100644
index 0000000..ebc738a
--- /dev/null
+++ b/app/src/main/res/layout/congress_people_list_item.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file