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