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
29 changes: 0 additions & 29 deletions .idea/codeStyles/Project.xml

This file was deleted.

3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,7 @@ 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'
implementation 'android.arch.lifecycle:extensions:1.1.1'
}
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lambdaschool.congressdetails">

<uses-permission android:name="android.permission.INTERNET" />

<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">
<activity android:name=".DetailsActivity"></activity>
<activity android:name=".ListActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package com.lambdaschool.congressdetails;

import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;

import java.util.ArrayList;

public class CongressPeopleListAdapter extends RecyclerView.Adapter<CongressPeopleListAdapter.ViewHolder> {
ArrayList<CongresspersonOverview> dataList;

public CongressPeopleListAdapter(ArrayList<CongresspersonOverview> 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 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.getShortTitle() + " " + 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);
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
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;
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);
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);
}
}
}
Original file line number Diff line number Diff line change
@@ -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<CongresspersonDetails> getData(){
MutableLiveData<CongresspersonDetails> liveData = new MutableLiveData<>();
liveData.setValue(data);
return liveData;
}
}
Original file line number Diff line number Diff line change
@@ -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<CongresspersonDetails> data;
private CongressPersonRepository repo;

public LiveData<CongresspersonDetails> 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));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.lambdaschool.congressdetails;

import android.arch.lifecycle.MutableLiveData;

import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;

import java.util.ArrayList;

public class CongressRepository {
public static final String CONGRESS_INTENT_KEY = "Person";
private ArrayList<CongresspersonOverview> data;

public CongressRepository() {
data = new ArrayList<>();
}

public ArrayList<CongresspersonOverview> UpdateData(CongresspersonOverview person){
data.add(person);
return data;
}

public MutableLiveData<ArrayList<CongresspersonOverview>> getData (){
MutableLiveData<ArrayList<CongresspersonOverview>> liveData = new MutableLiveData<>();
liveData.setValue(data);

return liveData;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
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 CongressViewModel extends ViewModel {
private MutableLiveData<ArrayList<CongresspersonOverview>> data;
private CongressRepository repo;

public LiveData<ArrayList<CongresspersonOverview>> 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));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
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;

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;
CongresspersonDetails person;
CongressPersonViewModel viewModel;


@Override
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<CongresspersonDetails>() {
@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);
new Thread(new Runnable() {
@Override
public void run() {
final CongresspersonDetails networkPerson = CongressDao.getMemberDetails(personId);

runOnUiThread(new Runnable() {
@Override
public void run() {
viewModel.updateData(networkPerson);
}
});
}
}).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()));

}
}
Loading