From a9b1763007a643142938806b41d5109fe684b0fe Mon Sep 17 00:00:00 2001 From: Spencer Stock Date: Thu, 2 May 2019 16:23:21 -0600 Subject: [PATCH 1/2] Added basic functionality for first activity --- .idea/codeStyles/Project.xml | 29 ---------- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 3 + .../CongresspersonOverviewRepo.java | 19 ++++++ .../CongresspersonOverviewViewModel.java | 21 +++++++ .../congressdetails/DetailActivity.java | 13 +++++ .../congressdetails/ListActivity.java | 58 ++++++++++++++++++- app/src/main/res/layout/activity_detail.xml | 9 +++ app/src/main/res/layout/activity_list.xml | 29 ++++++---- 9 files changed, 140 insertions(+), 42 deletions(-) delete mode 100644 .idea/codeStyles/Project.xml create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewViewModel.java create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/DetailActivity.java create mode 100644 app/src/main/res/layout/activity_detail.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..35a2a29 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,4 +26,5 @@ 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 'android.arch.lifecycle:extensions:1.1.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 26b1cb9..d6b4acd 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/CongresspersonOverviewRepo.java b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java new file mode 100644 index 0000000..2409dcf --- /dev/null +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java @@ -0,0 +1,19 @@ +package com.lambdaschool.congressdetails; + +import android.arch.lifecycle.MutableLiveData; + +import com.lambdaschool.congressdataapiaccess.CongressDao; +import com.lambdaschool.congressdataapiaccess.CongresspersonOverview; + +import java.util.ArrayList; + +public class CongresspersonOverviewRepo { + + public static MutableLiveData> wrapPeopleArray() { + MutableLiveData> people = new MutableLiveData<>(); + ArrayList rawData = CongressDao.getAllMembers(); + CongressDao.getAllMembers(); + people.setValue(rawData); + return people; + } +} 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..489c9f7 --- /dev/null +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewViewModel.java @@ -0,0 +1,21 @@ +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 CongresspersonOverviewViewModel extends ViewModel { + private MutableLiveData> people; + + public LiveData> getAllCongresspeople() { + + if (people == null) { + people = CongresspersonOverviewRepo.wrapPeopleArray(); + } + return people; + } +} diff --git a/app/src/main/java/com/lambdaschool/congressdetails/DetailActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/DetailActivity.java new file mode 100644 index 0000000..29df565 --- /dev/null +++ b/app/src/main/java/com/lambdaschool/congressdetails/DetailActivity.java @@ -0,0 +1,13 @@ +package com.lambdaschool.congressdetails; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; + +public class DetailActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_detail); + } +} diff --git a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java index 8be745a..2b90d06 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java @@ -1,18 +1,72 @@ package com.lambdaschool.congressdetails; +import android.arch.lifecycle.LiveData; +import android.arch.lifecycle.Observer; +import android.arch.lifecycle.ViewModel; +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.CongressDao; +import com.lambdaschool.congressdataapiaccess.CongresspersonOverview; +import java.util.ArrayList; -public class ListActivity extends AppCompatActivity { + +public class ListActivity extends AppCompatActivity implements View.OnClickListener { + + CongresspersonOverviewViewModel viewModel; + Context context; + LinearLayout linearLayoutChild; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); + context = this; + linearLayoutChild = findViewById(R.id.linear_layout_child); + + + viewModel = ViewModelProviders.of(this).get(CongresspersonOverviewViewModel.class); + viewModel.getAllCongresspeople().observe(this, new Observer>() { + @Override + public void onChanged(@Nullable ArrayList congresspersonOverviews) { + + + if (congresspersonOverviews != null) { + for(CongresspersonOverview congresspersonOverview: congresspersonOverviews) { + TextView textView = new TextView(context); + String temp = congresspersonOverview.getFirstName() + " " + congresspersonOverview.getLastName() + " " + congresspersonOverview.getTitle(); + textView.setText(temp); + textView.setTag(congresspersonOverview.getId()); + linearLayoutChild.addView(textView); + + } + } + } + }); - CongressDao.getAllMembers(); + new Thread(new Runnable() { + @Override + public void run() { + viewModel.getAllCongresspeople(); + } + }).start(); + + + + } + + @Override + public void onClick(View v) { + Intent intent = new Intent(context, DetailActivity.class); + intent.putExtra("tag", (String)v.getTag()); + startActivity(intent); } } diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml new file mode 100644 index 0000000..0653d24 --- /dev/null +++ b/app/src/main/res/layout/activity_detail.xml @@ -0,0 +1,9 @@ + + + + \ 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..33deaa1 100644 --- a/app/src/main/res/layout/activity_list.xml +++ b/app/src/main/res/layout/activity_list.xml @@ -1,18 +1,25 @@ - - + - \ No newline at end of file + + + + + + + + \ No newline at end of file From ef67acce09ddb24af6639c85cbb7696b1aff2ff9 Mon Sep 17 00:00:00 2001 From: Spencer Stock Date: Thu, 2 May 2019 17:33:36 -0600 Subject: [PATCH 2/2] basic finished project --- .../CongresspersonDetailRepo.java | 15 ++++ .../CongresspersonDetailViewModel.java | 22 +++++ .../CongresspersonOverviewRepo.java | 3 + .../congressdetails/DetailActivity.java | 29 +++++++ .../congressdetails/ListActivity.java | 2 + app/src/main/res/layout/activity_detail.xml | 80 +++++++++++++++++++ 6 files changed, 151 insertions(+) create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailRepo.java create mode 100644 app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailViewModel.java diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailRepo.java b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailRepo.java new file mode 100644 index 0000000..397fec0 --- /dev/null +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailRepo.java @@ -0,0 +1,15 @@ +package com.lambdaschool.congressdetails; + +import android.arch.lifecycle.MutableLiveData; + +import com.lambdaschool.congressdataapiaccess.CongressDao; +import com.lambdaschool.congressdataapiaccess.CongresspersonDetails; + +public class CongresspersonDetailRepo { + + public static MutableLiveData wrapSinglePerson(String id) { + MutableLiveData person = new MutableLiveData<>(); + person.setValue(CongressDao.getMemberDetails(id)); + return person; + } +} diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailViewModel.java b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailViewModel.java new file mode 100644 index 0000000..f89512e --- /dev/null +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonDetailViewModel.java @@ -0,0 +1,22 @@ +package com.lambdaschool.congressdetails; + +import android.arch.lifecycle.LiveData; +import android.arch.lifecycle.MutableLiveData; +import android.arch.lifecycle.ViewModel; + +import com.lambdaschool.congressdataapiaccess.CongresspersonDetails; +import com.lambdaschool.congressdataapiaccess.CongresspersonOverview; + +import java.util.ArrayList; + +public class CongresspersonDetailViewModel extends ViewModel { + private MutableLiveData person; + + public LiveData getSingleCongressPerson(String id) { + + if (person == null) { + person = CongresspersonDetailRepo.wrapSinglePerson(id); + } + return person; + } +} diff --git a/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java index 2409dcf..0ef4f16 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/CongresspersonOverviewRepo.java @@ -3,6 +3,7 @@ import android.arch.lifecycle.MutableLiveData; import com.lambdaschool.congressdataapiaccess.CongressDao; +import com.lambdaschool.congressdataapiaccess.CongresspersonDetails; import com.lambdaschool.congressdataapiaccess.CongresspersonOverview; import java.util.ArrayList; @@ -16,4 +17,6 @@ public static MutableLiveData> wrapPeopleArray people.setValue(rawData); return people; } + + } diff --git a/app/src/main/java/com/lambdaschool/congressdetails/DetailActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/DetailActivity.java index 29df565..4fa887d 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/DetailActivity.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/DetailActivity.java @@ -1,13 +1,42 @@ package com.lambdaschool.congressdetails; +import android.arch.lifecycle.Observer; +import android.arch.lifecycle.ViewModel; +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; public class DetailActivity extends AppCompatActivity { + CongresspersonDetailViewModel viewModel; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); + Intent intent = getIntent(); + final String personId = intent.getStringExtra("tag"); + viewModel = ViewModelProviders.of(this).get(CongresspersonDetailViewModel.class); + viewModel.getSingleCongressPerson(personId).observe(this, new Observer() { + @Override + public void onChanged(@Nullable CongresspersonDetails congresspersonDetails) { + String temp = congresspersonDetails.getFacebookAccount() + " " + congresspersonDetails.getLastName(); + ((TextView)findViewById(R.id.textView)).setText(temp); + } + }); + + new Thread(new Runnable() { + @Override + public void run() { + viewModel.getSingleCongressPerson(personId); + + } + }).start(); } } diff --git a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java index 2b90d06..0af2358 100644 --- a/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java +++ b/app/src/main/java/com/lambdaschool/congressdetails/ListActivity.java @@ -1,5 +1,6 @@ package com.lambdaschool.congressdetails; +import android.app.Activity; import android.arch.lifecycle.LiveData; import android.arch.lifecycle.Observer; import android.arch.lifecycle.ViewModel; @@ -45,6 +46,7 @@ public void onChanged(@Nullable ArrayList congressperson String temp = congresspersonOverview.getFirstName() + " " + congresspersonOverview.getLastName() + " " + congresspersonOverview.getTitle(); textView.setText(temp); textView.setTag(congresspersonOverview.getId()); + textView.setOnClickListener((View.OnClickListener) context ); linearLayoutChild.addView(textView); } diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml index 0653d24..5536d96 100644 --- a/app/src/main/res/layout/activity_detail.xml +++ b/app/src/main/res/layout/activity_detail.xml @@ -6,4 +6,84 @@ android:layout_height="match_parent" tools:context=".DetailActivity"> + + + + + + + + + + + + + + + + + + + + \ No newline at end of file