0% found this document useful (0 votes)
83 views11 pages

Delta Bookshelf Master

This document contains code for an Android bookshelf application. It includes classes for the main bookshelf activity screen, a Facebook entity class to retrieve and store Facebook profile data, an asynchronous task to fetch Facebook profile data and images, and an adapter class to display the data in a list view. The bookshelf activity populates a sample list of books and uses the adapter class to display it. The adapter initiates asynchronous tasks to fetch Facebook profile data and images for each item in the list.

Uploaded by

Shorya Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views11 pages

Delta Bookshelf Master

This document contains code for an Android bookshelf application. It includes classes for the main bookshelf activity screen, a Facebook entity class to retrieve and store Facebook profile data, an asynchronous task to fetch Facebook profile data and images, and an adapter class to display the data in a list view. The bookshelf activity populates a sample list of books and uses the adapter class to display it. The adapter initiates asynchronous tasks to fetch Facebook profile data and images for each item in the list.

Uploaded by

Shorya Kumar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

BookshelfActivity.

java spawrks 09/18/14 1-1/2(1)


1: package com.delta.bookshelf;
2:
3: import android.app.Activity;
4: import android.app.ListActivity;
5: import android.graphics.Color;
6: import android.os.Bundle;
7: import android.view.Menu;
8: import android.view.MenuItem;
9: import android.widget.ListView;
10:
11: import java.util.ArrayList;
12:
13: /*
14:
15: Originally inspired by Dmytro Titov’s demo on GitHub:
16:
17: https://github.com/dtitov/SpinList
18: */
19: public class BookshelfActivity extends ListActivity {
20:
21:
22: ArrayList<String> entitiesToDisplay = new ArrayList<String>();
23:
24: @Override
25: protected void onCreate(Bundle savedInstanceState) {
26: super.onCreate(savedInstanceState);
27:
28: //sample data
29: entitiesToDisplay.add("startrek");
30: entitiesToDisplay.add("thegreatgatsby");
31: entitiesToDisplay.add("goodnightmoonbook");
32: entitiesToDisplay.add("afarewelltoarms");
33: entitiesToDisplay.add("atlasshrugged");
34: entitiesToDisplay.add("schwem");
35: entitiesToDisplay.add("thedeltaprogram");
36: entitiesToDisplay.add("adamlupu");
37: entitiesToDisplay.add("YETspaceATX");
38: entitiesToDisplay.add("Philosophical-Investigations");
39: entitiesToDisplay.add("A-Light-in-the-Attic");
40: entitiesToDisplay.add("adventuretime");
41: entitiesToDisplay.add("The-Power-of-Myth");
42: entitiesToDisplay.add("Cryptonomicon");
43: entitiesToDisplay.add("SweetRitual");
44: entitiesToDisplay.add("ChicagoBears");
45: entitiesToDisplay.add("androidislife");
46: entitiesToDisplay.add("theiliad");
47:
48: ListView l = getListView();
BookshelfActivity.java spawrks 09/18/14 1-2/2(2)
49: l.setBackgroundColor(Color.argb(200,34,119,147));
50:
51: //display it
52: LazyAdapter lazyAdapter = new LazyAdapter(this, entitiesToDisplay);
53: setListAdapter(lazyAdapter);
54:
55:
56:
57:
58:
59: }
60:
61:
62: @Override
63: public boolean onCreateOptionsMenu(Menu menu) {
64:
65: // Inflate the menu; this adds items to the action bar if it is present.
66: getMenuInflater().inflate(R.menu.bookshelf, menu);
67: return true;
68: }
69:
70: @Override
71: public boolean onOptionsItemSelected(MenuItem item) {
72: // Handle action bar item clicks here. The action bar will
73: // automatically handle clicks on the Home/Up button, so long
74: // as you specify a parent activity in AndroidManifest.xml.
75: int id = item.getItemId();
76: if (id == R.id.action_settings) {
77: return true;
78: }
79: return super.onOptionsItemSelected(item);
80: }
81:
82: }
FacebookEntity.java spawrks 09/18/14 2-1/2(3)
1: package com.delta.bookshelf;
2:
3: import android.graphics.Bitmap;
4:
5: import org.apache.http.HttpResponse;
6: import org.apache.http.HttpStatus;
7: import org.apache.http.StatusLine;
8: import org.apache.http.client.HttpClient;
9: import org.apache.http.client.methods.HttpGet;
10: import org.apache.http.impl.client.DefaultHttpClient;
11: import org.json.JSONObject;
12: import org.json.JSONTokener;
13:
14: import java.io.ByteArrayOutputStream;
15:
16: /**
17: * Created by spawrks on 2/22/14.
18: */
19: public class FacebookEntity {
20: private final String GRAPH_API_URL = "https://graph.facebook.com/user?fields=picture,name";
21: private String name;
22: private String picture;
23: private Bitmap bitmap;
24:
25: public FacebookEntity(String id) {
26:
27: try {
28: HttpClient httpClient = new DefaultHttpClient();
29: String queryString = GRAPH_API_URL.replace("user", id);
30: HttpResponse httpResponse = httpClient.execute(new HttpGet(queryString));
31:
32: StatusLine statusLine = httpResponse.getStatusLine();
33: if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
34: ByteArrayOutputStream out = new ByteArrayOutputStream();
35: httpResponse.getEntity().writeTo(out);
36: out.close();
37: String responseString = out.toString();
38:
39: JSONObject object = (JSONObject) new JSONTokener(responseString).nextValue();
40:
41: this.picture = object.getJSONObject("picture")
42: .getJSONObject("data")
43: .getString("url");
44:
45: this.name = object.getString("name");
46: } else {
47: httpResponse.getEntity().getContent().close();
48: }
FacebookEntity.java spawrks 09/18/14 2-2/2(4)
49: } catch (Exception e) {
50: }
51: }
52:
53: public String getName() {
54: return name;
55: }
56:
57: public String getPicture() {
58: return picture;
59: }
60:
61: public Bitmap getBitmap() {
62: return this.bitmap;
63: }
64:
65: public void setBitmap(Bitmap bitmap) {
66: this.bitmap = bitmap;
67: }
68: }
FetchDataTask.java spawrks 09/18/14 3-1/2(5)
1: package com.delta.bookshelf;
2:
3: /**
4: * Created by spawrks on 2/22/14.
5: */
6:
7: import android.graphics.Bitmap;
8: import android.graphics.BitmapFactory;
9: import android.os.AsyncTask;
10:
11: import java.io.BufferedInputStream;
12: import java.io.IOException;
13: import java.io.InputStream;
14: import java.net.HttpURLConnection;
15: import java.net.MalformedURLException;
16:
17: public class FetchDataTask extends AsyncTask<Void, Void, FacebookEntity> {
18:
19: private LazyAdapter adapter;
20: private int position;
21: private String id;
22:
23: public FetchDataTask(LazyAdapter adapter, int position) {
24: this.adapter = adapter;
25: this.position = position;
26: this.id = (String) adapter.getItem(position);
27: }
28:
29: @Override
30: protected FacebookEntity doInBackground(Void... params) {
31:
32: //first get the user data
33: FacebookEntity user = new FacebookEntity(id);
34:
35: //then bitmap
36: Bitmap bitmap = null;
37: try {
38: HttpURLConnection httpUrlConnection;
39: httpUrlConnection = (HttpURLConnection) new java.net.URL(
40: user.getPicture()).openConnection();
41: httpUrlConnection.setReadTimeout(10000);
42: httpUrlConnection.setConnectTimeout(10000);
43: InputStream inputStream = httpUrlConnection.getInputStream();
44: BufferedInputStream bufferedInputStream = new BufferedInputStream(
45: inputStream);
46: bitmap = BitmapFactory.decodeStream(bufferedInputStream);
47: bufferedInputStream.close();
48: inputStream.close();
FetchDataTask.java spawrks 09/18/14 3-2/2(6)
49: httpUrlConnection.disconnect();
50:
51: } catch (MalformedURLException e) {
52: } catch (IOException e) {
53: }
54:
55: user.setBitmap(bitmap);
56:
57: return user;
58: }
59:
60: @Override
61: protected void onPostExecute(FacebookEntity result) {
62: super.onPostExecute(result);
63: adapter.saveEntity(result);
64: //recursion!
65: if (position < adapter.getCount() - 1) {
66: new FetchDataTask(adapter, ++position).execute();
67: }
68: }
69: }
LazyAdapter.java spawrks 09/18/14 4-1/3(7)
1: package com.delta.bookshelf;
2:
3: /**
4: * Created by spawrks on 2/22/14.
5: */
6:
7: import android.app.ListActivity;
8: import android.content.Context;
9: import android.graphics.Bitmap;
10: import android.graphics.Canvas;
11: import android.graphics.Color;
12: import android.graphics.Paint;
13: import android.graphics.PorterDuff;
14: import android.graphics.PorterDuffXfermode;
15: import android.graphics.Rect;
16: import android.graphics.RectF;
17: import android.graphics.drawable.BitmapDrawable;
18: import android.view.LayoutInflater;
19: import android.view.View;
20: import android.view.ViewGroup;
21: import android.widget.BaseAdapter;
22: import android.widget.ImageView;
23: import android.widget.ProgressBar;
24: import android.widget.TextView;
25:
26: import java.util.ArrayList;
27:
28: /**
29: * BaseAdapter extension with lazy loading. Item template is designed in
30: * res/layout/row.xml
31: */
32:
33: public class LazyAdapter extends BaseAdapter {
34: private ListActivity activity;
35: private LayoutInflater layoutInflater;
36: private ArrayList<String> names;
37: private FacebookEntity[] cachedEntities;
38: private int cacheSize = 0;
39:
40: public LazyAdapter(ListActivity activity, ArrayList<String> names) {
41: super();
42: this.activity = activity;
43: this.names = names;
44: this.cachedEntities = new FacebookEntity[this.names.size()];
45: layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
46: new FetchDataTask(this, 0).execute();
47: }
48:
LazyAdapter.java spawrks 09/18/14 4-2/3(8)
49:
50: public View getView(int position, View convertView, ViewGroup parent) {
51: FacebookEntity cachedEntity = cachedEntities[position]; // trying to get a user from cache
52:
53: View row = convertView;
54: ViewHolder viewHolder;
55:
56: if (row == null) {
57: row = layoutInflater.inflate(R.layout.row, null);
58: viewHolder = new ViewHolder();
59: viewHolder.textView = (TextView) row.findViewById(R.id.nameTextView);
60: viewHolder.spinner = (ProgressBar) row.findViewById(R.id.progressBar);
61: viewHolder.imageView = (ImageView) row.findViewById(R.id.imageView);
62: row.setTag(viewHolder);
63: } else {
64: viewHolder = (ViewHolder) row.getTag();
65: }
66:
67: if (cachedEntity != null) {
68: viewHolder.textView.setText(cachedEntity.getName());
69: viewHolder.spinner.setVisibility(View.GONE);
70: if(cachedEntity.getBitmap() != null){
71: Bitmap b = roundCornerImage(cachedEntity.getBitmap(),5.0f);
72: viewHolder.imageView.setImageBitmap(b);
73: }
74: } else {
75: viewHolder.textView.setText("");
76: viewHolder.spinner.setVisibility(View.VISIBLE);
77:
78: }
79:
80: return row;
81: }
82:
83: @Override
84: public Object getItem(int position) {
85: return names.get(position);
86: }
87:
88: @Override
89: public long getItemId(int position) {
90: return 0;
91: }
92:
93: @Override
94: public int getCount() {
95: return names.size();
96: }
LazyAdapter.java spawrks 09/18/14 4-3/3(9)
97:
98: public void saveEntity(FacebookEntity user) {
99: cachedEntities[cacheSize] = user;
100: cacheSize++;
101: notifyDataSetChanged(); //reload ListView
102: }
103:
104: private static class ViewHolder {
105: public TextView textView;
106: public ProgressBar spinner;
107: public ImageView imageView;
108: }
109:
110: public Bitmap roundCornerImage(Bitmap src, float round) {
111:
112: // Source image size
113: int width = src.getWidth();
114: int height = src.getHeight();
115: // create result bitmap output
116: Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
117: // set canvas for painting
118: Canvas canvas = new Canvas(result);
119: canvas.drawARGB(0, 0, 0, 0);
120:
121: // configure paint
122: final Paint paint = new Paint();
123: paint.setAntiAlias(true);
124: paint.setColor(Color.BLACK);
125:
126: // configure rectangle for embedding
127: final Rect rect = new Rect(0, 0, width, height);
128: final RectF rectF = new RectF(rect);
129:
130: // draw Round rectangle to canvas
131: canvas.drawRoundRect(rectF, round, round, paint);
132:
133: // create Xfer mode
134: paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
135: // draw source image to canvas
136: canvas.drawBitmap(src, rect, rect, paint);
137:
138: // return final image
139: return result;
140: }
141: }
MyInfo.java spawrks 09/18/14 5-1/1(10)
1: package com.delta.bookshelf;
2:
3: /**
4: * Created by learnovate on 3/13/14.
5: */
6: public class MyInfo {
7:
8: int myAge = 33;
9: String myName = "Adam";
10: boolean isMale = true;
11: char middleInitial = ’J’;
12: float myHeightInMeters = 1.87f;
13:
14: private void updateMyInfo(){
15: myAge = 34;
16: myName = "Adam Lupu";
17: }
18:
19: }
Table of Contents spawrks 09/18/14 -1/1(11)
1 bookshelf/src/main/java/com/delta/bookshelf/BookshelfActivity.java 2 pages 82 lines 14/02/22 22:20:57
2 bookshelf/src/main/java/com/delta/bookshelf/FacebookEntity.java 2 pages 67 lines 14/02/22 17:42:19
3 bookshelf/src/main/java/com/delta/bookshelf/FetchDataTask.java 2 pages 68 lines 14/02/22 17:42:19
4 bookshelf/src/main/java/com/delta/bookshelf/LazyAdapter.java 3 pages 140 lines 14/03/01 15:12:39
5 bookshelf/src/main/java/com/delta/bookshelf/MyInfo.java 1 pages 19 lines 14/03/13 14:10:07

You might also like