From a4d1129b9d60da9efeb1fa9ccc8f4cb6301b6fcf Mon Sep 17 00:00:00 2001 From: Jake Esveld Date: Thu, 2 May 2019 12:55:03 -0700 Subject: [PATCH 1/6] Set up basic recycler view to display data --- .idea/codeStyles/Project.xml | 29 ------ app/build.gradle | 2 + app/src/main/AndroidManifest.xml | 1 + .../CongressPeopleListAdapter.java | 75 +++++++++++++++ .../congressdetails/CongressRepository.java | 4 + .../congressdetails/ListActivity.java | 32 ++++++- app/src/main/res/layout/activity_list.xml | 14 ++- .../res/layout/congress_people_list_item.xml | 91 +++++++++++++++++++ 8 files changed, 210 insertions(+), 38 deletions(-) delete mode 100644 .idea/codeStyles/Project.xml create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongressPeopleListAdapter.java create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java create mode 100644 app/src/main/res/layout/congress_people_list_item.xml 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..36c168b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,4 +26,6 @@ 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' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26b1cb9..aeb3c42 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ + { + 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 ViewHolder vh, int i) { + 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.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); + } + + @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; + public ViewHolder(@NonNull View itemView) { + super(itemView); + 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/CongressRepository.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java new file mode 100644 index 0000000..d6eaba9 --- /dev/null +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java @@ -0,0 +1,4 @@ +package com.lambdaschool.congressdetails; + +public class CongressRepository { +} diff --git a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java index 8be745a..1b7ea47 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java @@ -1,18 +1,48 @@ package com.lambdaschool.congressdetails; +import android.content.Context; 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; + @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)); + new Thread(new Runnable() { + @Override + public void run() { + final ArrayList networkList = CongressDao.getAllMembers(); + runOnUiThread(new Runnable() { + @Override + public void run() { + for(CongresspersonOverview person: networkList){ + congressPeople.add(person); + listAdapter.notifyItemChanged(congressPeople.size() - 1); + } + } + }); + } + }).start(); - CongressDao.getAllMembers(); } } 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..e473026 --- /dev/null +++ b/app/src/main/res/layout/congress_people_list_item.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 08baeb7c5ada0591f0101106818246ee0b6bede0 Mon Sep 17 00:00:00 2001 From: Jake Esveld Date: Thu, 2 May 2019 13:00:27 -0700 Subject: [PATCH 2/6] Add CongressRepository Class --- .../congressdetails/CongressRepository.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java index d6eaba9..088f32b 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java @@ -1,4 +1,27 @@ package com.lambdaschool.congressdetails; +import android.arch.lifecycle.MutableLiveData; + +import com.lambdaschool.congressdataapiaccess.CongresspersonOverview; + +import java.util.ArrayList; + public class CongressRepository { + 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; + } } From d75ae16a8d17eae5ea9dfb6b37f4936b5c5724b9 Mon Sep 17 00:00:00 2001 From: Jake Esveld Date: Thu, 2 May 2019 13:09:55 -0700 Subject: [PATCH 3/6] Add CongressViewModel class --- .../congressdetails/CongressViewModel.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongressViewModel.java 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..b97f91a --- /dev/null +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressViewModel.java @@ -0,0 +1,29 @@ +package com.lambdaschool.congressdetails; + +import android.arch.lifecycle.LiveData; +import android.arch.lifecycle.MutableLiveData; + +import com.lambdaschool.congressdataapiaccess.CongresspersonOverview; + +import java.util.ArrayList; + +public class CongressViewModel { + 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)); + } +} From ffc3ba91322b3f204906bc0d5091fa4799355133 Mon Sep 17 00:00:00 2001 From: Jake Esveld Date: Thu, 2 May 2019 13:19:01 -0700 Subject: [PATCH 4/6] Add viewModel implementation to ListActivity --- app/build.gradle | 1 + .../congressdetails/CongressViewModel.java | 3 ++- .../congressdetails/ListActivity.java | 18 ++++++++++++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 36c168b..b971a12 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,4 +28,5 @@ dependencies { 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/java/com/lambdaschool/congressdetails/CongressViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressViewModel.java index b97f91a..6f157fc 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/CongressViewModel.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressViewModel.java @@ -2,12 +2,13 @@ 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 { +public class CongressViewModel extends ViewModel { private MutableLiveData> data; private CongressRepository repo; diff --git a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java index 1b7ea47..a52478d 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java @@ -1,6 +1,9 @@ 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; @@ -17,6 +20,7 @@ public class ListActivity extends AppCompatActivity { ArrayList congressPeople; CongressPeopleListAdapter listAdapter; Context context; + private CongressViewModel viewModel; @Override protected void onCreate(Bundle savedInstanceState) { @@ -28,6 +32,16 @@ protected void onCreate(Bundle savedInstanceState) { 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) { + congressPeople.addAll(congresspersonOverviews); + } + listAdapter.notifyDataSetChanged(); + } + }); new Thread(new Runnable() { @Override public void run() { @@ -36,8 +50,8 @@ public void run() { @Override public void run() { for(CongresspersonOverview person: networkList){ - congressPeople.add(person); - listAdapter.notifyItemChanged(congressPeople.size() - 1); + viewModel.updateData(person); + } } }); From 6b5cdd0d6046043d4fb2a6ac9b0ad9b91ada5dad Mon Sep 17 00:00:00 2001 From: Jake Esveld Date: Thu, 2 May 2019 14:05:41 -0700 Subject: [PATCH 5/6] Create Details Activity. Accept intent, and populate fields. Create CongressPerson Repository and ViewModel --- app/src/main/AndroidManifest.xml | 4 +- .../CongressPeopleListAdapter.java | 17 +++- .../CongressPersonRepository.java | 24 ++++++ .../CongressPersonViewModel.java | 28 +++++++ .../congressdetails/CongressRepository.java | 1 + .../congressdetails/DetailsActivity.java | 73 +++++++++++++++++ .../congressdetails/ListActivity.java | 6 +- app/src/main/res/layout/activity_details.xml | 81 +++++++++++++++++++ .../res/layout/congress_people_list_item.xml | 1 + 9 files changed, 230 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongressPersonRepository.java create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongressPersonViewModel.java create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java create mode 100644 app/src/main/res/layout/activity_details.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aeb3c42..57dba39 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,8 @@ - + + + diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongressPeopleListAdapter.java b/app/src/main/java/com/lambdaschool/congressdetails/CongressPeopleListAdapter.java index 98484b8..b2083cb 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/CongressPeopleListAdapter.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressPeopleListAdapter.java @@ -1,5 +1,6 @@ package com.lambdaschool.congressdetails; +import android.content.Intent; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; @@ -26,15 +27,15 @@ public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { } @Override - public void onBindViewHolder(@NonNull ViewHolder vh, int i) { - CongresspersonOverview data = dataList.get(i); + 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.getFirstName() + " " + data.getLastName(); + String displayTitle = data.getShortTitle() + " " + data.getFirstName() + " " + data.getLastName(); vh.textDOB.setText(displayDOB); vh.textFacebook.setText(displayFacebook); @@ -44,6 +45,14 @@ public void onBindViewHolder(@NonNull ViewHolder vh, int i) { 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 @@ -60,8 +69,10 @@ public class ViewHolder extends RecyclerView.ViewHolder { 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); 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 index 088f32b..dc164f5 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongressRepository.java @@ -7,6 +7,7 @@ import java.util.ArrayList; public class CongressRepository { + public static final String CONGRESS_INTENT_KEY = "Person"; private ArrayList data; public CongressRepository() { 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..1cf24fe --- /dev/null +++ b/app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java @@ -0,0 +1,73 @@ +package com.lambdaschool.congressdetails; + +import android.content.Intent; +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; + TextView textState; + TextView textChamber; + TextView textStartDate; + TextView textEndDate; + TextView textOffice; + TextView textPhone; + CongresspersonDetails person; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_details); + + 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() { + person = networkPerson; + updateUI(person); + } + }); + } + }).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 a52478d..d791173 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java @@ -37,7 +37,11 @@ protected void onCreate(Bundle savedInstanceState) { @Override public void onChanged(@Nullable ArrayList congresspersonOverviews) { if(congresspersonOverviews != null) { - congressPeople.addAll(congresspersonOverviews); + for(CongresspersonOverview person: congresspersonOverviews){ + if(!congressPeople.contains(person)) { + congressPeople.add(person); + } + } } listAdapter.notifyDataSetChanged(); } 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/congress_people_list_item.xml b/app/src/main/res/layout/congress_people_list_item.xml index e473026..ebc738a 100644 --- a/app/src/main/res/layout/congress_people_list_item.xml +++ b/app/src/main/res/layout/congress_people_list_item.xml @@ -7,6 +7,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> From 630c262856197f0484a0a35f07593c11e6216b84 Mon Sep 17 00:00:00 2001 From: Jake Esveld Date: Thu, 2 May 2019 14:08:12 -0700 Subject: [PATCH 6/6] Add viewModel to DetailsActivity --- .../congressdetails/DetailsActivity.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java index 1cf24fe..7ff469d 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/DetailsActivity.java @@ -1,6 +1,9 @@ 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; @@ -18,13 +21,8 @@ public class DetailsActivity extends AppCompatActivity { TextView textTrackId; TextView textTwitter; TextView textFacebook; - TextView textState; - TextView textChamber; - TextView textStartDate; - TextView textEndDate; - TextView textOffice; - TextView textPhone; CongresspersonDetails person; + CongressPersonViewModel viewModel; @Override @@ -32,6 +30,15 @@ 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); @@ -43,8 +50,7 @@ public void run() { runOnUiThread(new Runnable() { @Override public void run() { - person = networkPerson; - updateUI(person); + viewModel.updateData(networkPerson); } }); }