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 "android.arch.lifecycle:extensions:1.1.0"
implementation "android.arch.lifecycle:viewmodel:1.1.0"
implementation 'com.android.support:recyclerview-v7:28.0.0-rc02'
}
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=".CongresspersonDetailsActivity"></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,72 @@
package com.lambdaschool.congressdetails;

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 CongresspeopleAdapter extends RecyclerView.Adapter<CongresspeopleAdapter.ViewHolder> {

private ArrayList<CongresspersonOverview> congresspersonOverviews = new ArrayList<>();
private OnCongresspersonClickListener onCongresspersonClickListener;

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new ViewHolder(LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_congressperson, viewGroup, false));
}

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
final CongresspersonOverview congresspersonOverview = congresspersonOverviews.get(i);

String text = congresspersonOverview.getFirstName() + " " + congresspersonOverview.getLastName() + ", " +
congresspersonOverview.getParty() + ", " + congresspersonOverview.getState();
viewHolder.detailsTextView.setText(text);

viewHolder.detailsTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onCongresspersonClickListener != null) {
onCongresspersonClickListener.onClick(congresspersonOverview);
}
}
});
}

@Override
public int getItemCount() {
return congresspersonOverviews.size();
}

public void setCongresspersonOverviews(@NonNull ArrayList<CongresspersonOverview> congresspersonOverviews) {
this.congresspersonOverviews = congresspersonOverviews;
notifyDataSetChanged();
}

public class ViewHolder extends RecyclerView.ViewHolder {

public ViewHolder(@NonNull View itemView) {
super(itemView);

detailsTextView = itemView.findViewById(R.id.item_congressperson_text_details);
}

private TextView detailsTextView;

}

public interface OnCongresspersonClickListener {
void onClick(CongresspersonOverview congresspersonOverview);
}

public void setOnCongresspersonClickListener(OnCongresspersonClickListener l) {
onCongresspersonClickListener = l;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.lambdaschool.congressdetails;

import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.MutableLiveData;
import android.arch.lifecycle.ViewModel;
import android.support.annotation.AnyThread;

import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;

import java.util.ArrayList;

public class CongresspeopleViewModel extends ViewModel {

private MutableLiveData<ArrayList<CongresspersonOverview>> m_CongresspeopleLD;
private CongresspersonOverviewRepository repository;

public LiveData<ArrayList<CongresspersonOverview>> getCongresspeopleLD() {
if (m_CongresspeopleLD == null) {
loadCongresspeople();
}

return m_CongresspeopleLD;
}

private void loadCongresspeople() {
repository = new CongresspersonOverviewRepository();
m_CongresspeopleLD = repository.getData();
}

@AnyThread
public void reload() {
repository.reload(m_CongresspeopleLD);
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
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.LinearLayout;
import android.widget.TextView;

import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;

public class CongresspersonDetailsActivity extends AppCompatActivity {

private CongresspersonDetailsViewModel congresspersonDetailsViewModel;
private LinearLayout m_congresspersonLinearLayout;

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

m_congresspersonLinearLayout = findViewById(R.id.linear_layout_congressperson_details);

congresspersonDetailsViewModel = ViewModelProviders.of(this).get(CongresspersonDetailsViewModel.class);

Intent intent = getIntent();
String congresspersonId = intent.getStringExtra(ListActivity.KEY_EXTRA_CONGRESSPERSON_ID);

congresspersonDetailsViewModel.getCongresspersonDetailsLD(congresspersonId).observe(this, new CongresspersonDetailsObserver());
}

private class CongresspersonDetailsObserver implements Observer<CongresspersonDetails> {

@Override
public void onChanged(@Nullable CongresspersonDetails congresspersonDetails) {
if (congresspersonDetails == null) {
return;
}

// full name
TextView textViewFullName = new TextView(CongresspersonDetailsActivity.this);
String fullName = "Name: ";
fullName += congresspersonDetails.getFirstName();
if (!congresspersonDetails.getMiddleName().equals("null")) {
fullName += " " + congresspersonDetails.getMiddleName();
}
if (!congresspersonDetails.getLastName().equals("null")) {
fullName += " " + congresspersonDetails.getLastName();
}
textViewFullName.setText(fullName);
textViewFullName.setTextSize(25.f);
m_congresspersonLinearLayout.addView(textViewFullName);

// party
TextView textViewParty = new TextView(CongresspersonDetailsActivity.this);
String party = "Party: ";
party += congresspersonDetails.getCurrentParty();
textViewParty.setText(party);
textViewParty.setTextSize(25.f);
m_congresspersonLinearLayout.addView(textViewParty);

// bInOffice
TextView textViewInOffice = new TextView(CongresspersonDetailsActivity.this);
String inOffice = "In office: ";
inOffice += congresspersonDetails.isInOffice() ? "Yes" : "No";
textViewInOffice.setText(inOffice);
textViewInOffice.setTextSize(25.f);
m_congresspersonLinearLayout.addView(textViewInOffice);

}
}
}
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.CongressDao;
import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;

public class CongresspersonDetailsRepository {

public MutableLiveData<CongresspersonDetails> getData(String id) {
final MutableLiveData<CongresspersonDetails> liveData = new MutableLiveData<>();

requestDetails(liveData, id);

liveData.setValue(null);
return liveData;
}

private void requestDetails(final MutableLiveData<CongresspersonDetails> liveData, final String id) {
new Thread(new Runnable() {
@Override
public void run() {
liveData.postValue(CongressDao.getMemberDetails(id));
}
}).start();
}

}
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.CongresspersonDetails;

public class CongresspersonDetailsViewModel extends ViewModel {
private MutableLiveData<CongresspersonDetails> m_CongresspersonDetailsLD;
private CongresspersonDetailsRepository repository;
private String id;

public LiveData<CongresspersonDetails> getCongresspersonDetailsLD(String id) {
if (m_CongresspersonDetailsLD == null) {
this.id = id;
loadCongresspersonDetails();
}
return m_CongresspersonDetailsLD;
}

private void loadCongresspersonDetails() {
repository = new CongresspersonDetailsRepository();
m_CongresspersonDetailsLD = repository.getData(id);
}

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

import android.arch.lifecycle.MutableLiveData;
import android.support.annotation.AnyThread;

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

import java.util.ArrayList;

public class CongresspersonOverviewRepository {

public MutableLiveData<ArrayList<CongresspersonOverview>> getData() {
final MutableLiveData<ArrayList<CongresspersonOverview>> liveData = new MutableLiveData<>();

requestAllMembers(liveData);

liveData.setValue(new ArrayList<CongresspersonOverview>());
return liveData;
}

@AnyThread
public void reload(MutableLiveData<ArrayList<CongresspersonOverview>> liveData) {
requestAllMembers(liveData);
}

private void requestAllMembers(final MutableLiveData<ArrayList<CongresspersonOverview>> liveData) {
new Thread(new Runnable() {
@Override
public void run() {
liveData.postValue(CongressDao.getAllMembers());
}
}).start();
}

}
Loading