Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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')
}
5 changes: 4 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lambdaschool.congressdetails">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:usesCleartextTraffic="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
Expand All @@ -16,6 +18,7 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".CongresspersonDetailsActivity"></activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -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<ArrayList<CongresspersonOverview>> congressList;

public LiveData<ArrayList<CongresspersonOverview>> getCongressList(){
if(congressList == null){
Log.i("LOADLIST", "list is loaded");
loadList();
}
return congressList;
}

private void loadList(){
congressList = CongresspersonOverviewRepo.getOverviewList();
}
}
Original file line number Diff line number Diff line change
@@ -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<CongresspersonDetails> liveDetails = viewModel.getDetails(id);
liveDetails.observe(this, new Observer<CongresspersonDetails>() {
@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);
}
}
});
}
}
}
Original file line number Diff line number Diff line change
@@ -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<CongresspersonDetails> getDetails(String id){
final MutableLiveData<CongresspersonDetails> liveDataList = new MutableLiveData<>();
CongresspersonDetails profile = CongressDao.getMemberDetails(id);
liveDataList.setValue(profile);
return liveDataList;
}
}
Original file line number Diff line number Diff line change
@@ -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<CongresspersonDetails> liveDetails;

public LiveData<CongresspersonDetails> getDetails(String id){
if(liveDetails == null){
loadData(id);
}
return liveDetails;
}

public void loadData(String id) {
liveDetails = CongresspersonDetailsRepo.getDetails(id);
}
}
Original file line number Diff line number Diff line change
@@ -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<ArrayList<CongresspersonOverview>> getOverviewList(){
final MutableLiveData<ArrayList<CongresspersonOverview>> liveDataList = new MutableLiveData<>();
ArrayList<CongresspersonOverview> rawData = CongressDao.getAllMembers();
liveDataList.setValue(rawData);
return liveDataList;
}

}
Original file line number Diff line number Diff line change
@@ -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<ArrayList<CongresspersonOverview>>() {
@Override
public void onChanged(@Nullable ArrayList<CongresspersonOverview> 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;
}
}
50 changes: 50 additions & 0 deletions app/src/main/res/layout/activity_congressperson_details.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CongresspersonDetailsActivity">

<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/state"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintEnd_toStartOf="@+id/party"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/name"
app:layout_constraintTop_toTopOf="@+id/name" />

<TextView
android:id="@+id/party"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/state"
app:layout_constraintTop_toTopOf="@+id/state" />

<TextView
android:id="@+id/votes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/state" />
</android.support.constraint.ConstraintLayout>
19 changes: 11 additions & 8 deletions app/src/main/res/layout/activity_list.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
android:layout_height="match_parent"
tools:context=".ListActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
android:id="@+id/parent_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

</ScrollView>

</android.support.constraint.ConstraintLayout>