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.

6 changes: 5 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,14 @@ 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'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:design:28.0.0'
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 'com.android.support:recyclerview-v7:28.0.0'
implementation 'android.arch.lifecycle:extensions:1.1.1'
}
16 changes: 15 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,34 @@
<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=".ListActivity">
<activity
android:name=".ItemListActivity"
android:label="@string/title_item_list"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ItemDetailActivity"
android:label="@string/title_item_detail"
android:parentActivityName=".ItemListActivity"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.lambdaschool.congressdetails.ItemListActivity" />
</activity>
</application>

</manifest>
29 changes: 29 additions & 0 deletions app/src/main/java/com/lambdaschool/congressdetails/CPORepo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.lambdaschool.congressdetails;

import android.arch.lifecycle.MutableLiveData;
import android.content.Context;

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

import java.util.ArrayList;

public class CPORepo {
private ArrayList<CongresspersonOverview> rawData;
private Context context;

public CPORepo(Context context) {
rawData = new ArrayList<>();
this.context = context;
}

public MutableLiveData<ArrayList<CongresspersonOverview>> getData() {
final MutableLiveData<ArrayList<CongresspersonOverview>> liveData =
new MutableLiveData<>();
rawData = CongressDao.getAllMembers();
liveData.setValue(rawData);
return liveData;
}


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

import android.arch.lifecycle.LiveData;
import android.arch.lifecycle.MutableLiveData;
import android.arch.lifecycle.ViewModel;
import android.content.Context;

import com.lambdaschool.congressdataapiaccess.CongresspersonOverview;

import java.util.ArrayList;

public class CPOViewModel extends ViewModel {
private MutableLiveData<ArrayList<CongresspersonOverview>> liveData;
private CPORepo repository;

public LiveData<ArrayList<CongresspersonOverview>> getLiveData(Context context) {
if (liveData == null) {
loadData(context);
}
return liveData;
}

public void loadData(Context context) {
repository = new CPORepo(context);
liveData = repository.getData();
}


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

import android.arch.lifecycle.MutableLiveData;
import android.content.Context;

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

public class DetailsRepo {
private CongresspersonDetails details;
private String id;
private Context context;

public DetailsRepo(Context context, String id) {
this.context = context;
this.id = id;
}

public MutableLiveData<CongresspersonDetails> getDetails() {
MutableLiveData<CongresspersonDetails> liveDetails =
new MutableLiveData<>();
details = CongressDao.getMemberDetails(id);
liveDetails.setValue(details);
return liveDetails;
}
}
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 android.content.Context;

import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;


public class DetailsViewModel extends ViewModel {

private MutableLiveData<CongresspersonDetails> liveDetails;
private DetailsRepo detailsRepo;

public LiveData<CongresspersonDetails> getLiveData(Context context, String id) {
if (liveDetails == null) {
loadData(context, id);
}
return liveDetails;
}

public void loadData(Context context, String id) {
detailsRepo = new DetailsRepo(context, id);
liveDetails = detailsRepo.getDetails();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package com.lambdaschool.congressdetails;

import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProvider;
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.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.ActionBar;
import android.view.MenuItem;

import com.lambdaschool.congressdataapiaccess.CongresspersonDetails;

/**
* An activity representing a single Item detail screen. This
* activity is only used on narrow width devices. On tablet-size devices,
* item details are presented side-by-side with a list of items
* in a {@link ItemListActivity}.
*/
public class ItemDetailActivity extends AppCompatActivity {

private DetailsViewModel detailsViewModel;
private Context context;
private CongresspersonDetails details;
private String id;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_item_detail);
context = this;
id = getIntent().getStringExtra(ItemDetailFragment.ARG_ITEM_ID);


detailsViewModel = ViewModelProviders.of(this).get(DetailsViewModel.class);
detailsViewModel.getLiveData(this, id ).observe(this, new Observer<CongresspersonDetails>() {
@Override
public void onChanged(@Nullable CongresspersonDetails congresspersonDetails) {
Bundle arguments = new Bundle();
arguments.putString(ItemDetailFragment.ARG_ITEM_ID,
getIntent().getStringExtra(ItemDetailFragment.ARG_ITEM_ID));
ItemDetailFragment fragment = new ItemDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.item_detail_container, fragment);
}
});


Toolbar toolbar = (Toolbar) findViewById(R.id.detail_toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own detail action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});

// Show the Up button in the action bar.
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}

// savedInstanceState is non-null when there is fragment state
// saved from previous configurations of this activity
// (e.g. when rotating the screen from portrait to landscape).
// In this case, the fragment will automatically be re-added
// to its container so we don't need to manually add it.
// For more information, see the Fragments API guide at:
//
// http://developer.android.com/guide/components/fragments.html
//
if (savedInstanceState == null) {
// Create the detail fragment and add it to the activity
// using a fragment transaction.
Bundle arguments = new Bundle();
arguments.putString(ItemDetailFragment.ARG_ITEM_ID,
getIntent().getStringExtra(ItemDetailFragment.ARG_ITEM_ID));
ItemDetailFragment fragment = new ItemDetailFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.add(R.id.item_detail_container, fragment)
.commit();
}
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
// This ID represents the Home or Up button. In the case of this
// activity, the Up button is shown. For
// more details, see the Navigation pattern on Android Design:
//
// http://developer.android.com/design/patterns/navigation.html#up-vs-back
//
navigateUpTo(new Intent(this, ItemListActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
Loading