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
9 changes: 8 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,20 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
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')
}
7 changes: 6 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,25 @@
<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:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity android:name=".ListActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailsView"></activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.lambdaschool.congressdetails;

import android.arch.lifecycle.MutableLiveData;

import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;
import com.lambdaschool.congressdataapiaccess.CongressDao;


public class CPDetailsRepo {
public static MutableLiveData<CongresspersonDetails> getDetails(String id) {
final MutableLiveData<CongresspersonDetails> liveDataList = new MutableLiveData<>();
CongresspersonDetails details = CongressDao.getMemberDetails(id);
liveDataList.setValue(details);
return liveDataList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
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 CPDetailsViewModel extends ViewModel {

private MutableLiveData<CongresspersonDetails> liveDetails;

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

private void loadData(String id) {
liveDetails = CPDetailsRepo.getDetails(id);

}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.lambdaschool.congressdetails;

import android.arch.lifecycle.MutableLiveData;
import android.arch.lifecycle.ViewModel;

import com.lambdaschool.congressdataapiaccess.CongressDao;
import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;

import java.util.ArrayList;

public class CPOverviewRepo extends ViewModel {
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
@@ -0,0 +1,27 @@
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;
import java.util.Collections;

public class CPOverviewViewModel extends ViewModel {
private MutableLiveData<ArrayList<CongresspersonOverview>> overviewList;

public LiveData<ArrayList<CongresspersonOverview>> getOverViewList() {
if (overviewList == null) {
loadList();
}


return overviewList;
}

private void loadList() {
overviewList = CPOverviewRepo.getOverviewList();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.lambdaschool.congressdetails;

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.util.Log;
import android.widget.TextView;

import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;


public class DetailsView extends AppCompatActivity {

TextView textName, textParty, textURL, textVotePercent;
CPDetailsViewModel viewModel;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details_view);
textName = findViewById(R.id.text_name);
textParty = findViewById(R.id.text_party);
textURL = findViewById(R.id.text_url);
// textVotePercent = findViewById(R.id.text_vote_with_party);


String id = getIntent().getStringExtra("CPID");

if (id != null) {
viewModel = ViewModelProviders.of(this).get(CPDetailsViewModel.class);
viewModel.getDetails(id).observe(this, new Observer<CongresspersonDetails>() {
@Override
public void onChanged(@Nullable CongresspersonDetails cpDetails) {
if (cpDetails != null) {
textName.setText(String.format("%s %s", cpDetails.getFirstName(), cpDetails.getLastName()));
String partyName = "";
partyName = cpDetails.getCurrentParty();
if (partyName.equals("R")) {
partyName = "Republican";
} else if (partyName.equals("D")) {
partyName = "Democrat";
}
textParty.setText(partyName);
textURL.setText(cpDetails.getUrl());
}
}
});
}


}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,75 @@
package com.lambdaschool.congressdetails;

import android.arch.lifecycle.Observer;
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.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;


import android.arch.lifecycle.ViewModelProviders;

import java.util.ArrayList;
import java.util.Collections;

public class ListActivity extends AppCompatActivity {

LinearLayout parentLayout;
CPOverviewViewModel viewModel;
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);

parentLayout = findViewById(R.id.parent_layout);
context = this;

viewModel = ViewModelProviders.of(this).get(CPOverviewViewModel.class);

viewModel.getOverViewList().observe(this, new Observer<ArrayList<CongresspersonOverview>>() {
@Override
public void onChanged(@Nullable ArrayList<CongresspersonOverview> cpOverviews) {
if (cpOverviews != null) {
Collections.sort(cpOverviews,
(o1, o2) -> o1.getState().compareTo(o2.getState()));
for (CongresspersonOverview person : cpOverviews) {
parentLayout.addView(getDefaultTextView(person));
}
}
}
});

}

TextView getDefaultTextView(final CongresspersonOverview person) {
TextView view = new TextView(context);
String displayText = String.format("%s %s (%s)", person.getFirstName(), person.getLastName(), person.getState());
view.setText(displayText);
view.setTextSize(28);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String id = person.getId();
Log.i("CPID", id);

Intent intent = new Intent(context, DetailsView.class);
intent.putExtra("CPID",id);
startActivity(intent);
}
});
return view;
}




}
90 changes: 90 additions & 0 deletions app/src/main/res/layout/activity_details_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<?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=".DetailsView">

<TextView
android:id="@+id/text_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="TextView"
android:textAlignment="center"
android:textSize="18dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteY="0dp" />

<TextView
android:id="@+id/textView3"
android:layout_width="85dp"
android:layout_height="wrap_content"
android:layout_marginStart="36dp"
android:text="Party:"
android:textSize="20dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_name" />

<TextView
android:id="@+id/text_party"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="15dp"
app:layout_constraintBottom_toBottomOf="@+id/textView3"
app:layout_constraintStart_toEndOf="@+id/textView3"
app:layout_constraintTop_toTopOf="@+id/textView3"
app:layout_constraintVertical_bias=".8" />

<TextView
android:id="@+id/textView5"
android:layout_width="85dp"
android:layout_height="wrap_content"
android:layout_marginStart="36dp"
android:paddingTop="10dp"
android:text="Website:"
android:textSize="20dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_party" />

<TextView
android:id="@+id/text_url"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:text="TextView"
android:textSize="15dp"
app:layout_constraintBottom_toBottomOf="@+id/textView5"
app:layout_constraintStart_toEndOf="@+id/textView5"
app:layout_constraintTop_toTopOf="@+id/textView5"
app:layout_constraintVertical_bias=".8" />

<!-- <TextView
android:id="@+id/textView6"
android:layout_width="85dp"
android:layout_height="wrap_content"
android:layout_marginStart="36dp"
android:paddingTop="10dp"
android:text="% Voted with party:"
android:textSize="20dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5" />

<TextView
android:id="@+id/text_vote_with_party"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:text="TextView"
android:textSize="15dp"
app:layout_constraintBottom_toBottomOf="@+id/textView6"
app:layout_constraintStart_toEndOf="@+id/textView6"
app:layout_constraintTop_toTopOf="@+id/textView6"
app:layout_constraintVertical_bias=".6" />-->

</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>
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading