Showing
7 changed files
with
184 additions
and
4 deletions
| ... | @@ -36,6 +36,7 @@ dependencies { | ... | @@ -36,6 +36,7 @@ dependencies { |
| 36 | compile 'com.google.firebase:firebase-crash:11.0.2' | 36 | compile 'com.google.firebase:firebase-crash:11.0.2' |
| 37 | compile 'com.firebaseui:firebase-ui-database:0.4.0' | 37 | compile 'com.firebaseui:firebase-ui-database:0.4.0' |
| 38 | compile 'com.android.support:design:25.3.1' | 38 | compile 'com.android.support:design:25.3.1' |
| 39 | + compile 'com.squareup.picasso:picasso:2.5.2' | ||
| 39 | testCompile 'junit:junit:4.12' | 40 | testCompile 'junit:junit:4.12' |
| 40 | } | 41 | } |
| 41 | 42 | ... | ... |
| 1 | +package com.example.user.firebaseauthdemo; | ||
| 2 | + | ||
| 3 | +/** | ||
| 4 | + * Created by HYB on 2017. 10. 13.. | ||
| 5 | + */ | ||
| 6 | + | ||
| 7 | +public class Blog | ||
| 8 | +{ | ||
| 9 | + private String title; | ||
| 10 | + private String desc; | ||
| 11 | + private String image; | ||
| 12 | + | ||
| 13 | + public Blog(){ | ||
| 14 | + | ||
| 15 | + } | ||
| 16 | + | ||
| 17 | + public Blog(String title, String desc, String image) { | ||
| 18 | + this.title = title; | ||
| 19 | + this.desc = desc; | ||
| 20 | + this.image = image; | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | + public String getDesc() { | ||
| 24 | + return desc; | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + public void setDesc(String desc) { | ||
| 28 | + this.desc = desc; | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + public String getImage() { | ||
| 32 | + return image; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + public void setImage(String image) { | ||
| 36 | + this.image = image; | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + public String getTitle() { | ||
| 40 | + return title; | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + public void setTitle(String title) { | ||
| 44 | + this.title = title; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | +} |
| 1 | package com.example.user.firebaseauthdemo; | 1 | package com.example.user.firebaseauthdemo; |
| 2 | 2 | ||
| 3 | +import android.content.Context; | ||
| 3 | import android.content.Intent; | 4 | import android.content.Intent; |
| 4 | import android.os.Bundle; | 5 | import android.os.Bundle; |
| 5 | import android.support.annotation.Nullable; | 6 | import android.support.annotation.Nullable; |
| 6 | import android.support.v4.app.Fragment; | 7 | import android.support.v4.app.Fragment; |
| 8 | +import android.support.v7.widget.LinearLayoutManager; | ||
| 9 | +import android.support.v7.widget.RecyclerView; | ||
| 7 | import android.view.LayoutInflater; | 10 | import android.view.LayoutInflater; |
| 8 | import android.view.Menu; | 11 | import android.view.Menu; |
| 9 | import android.view.MenuInflater; | 12 | import android.view.MenuInflater; |
| 10 | import android.view.MenuItem; | 13 | import android.view.MenuItem; |
| 11 | import android.view.View; | 14 | import android.view.View; |
| 12 | import android.view.ViewGroup; | 15 | import android.view.ViewGroup; |
| 16 | +import android.widget.ImageView; | ||
| 17 | +import android.widget.TextView; | ||
| 18 | + | ||
| 19 | +import com.firebase.ui.database.FirebaseRecyclerAdapter; | ||
| 20 | +import com.google.firebase.database.DatabaseReference; | ||
| 21 | +import com.google.firebase.database.FirebaseDatabase; | ||
| 22 | +import com.squareup.picasso.Picasso; | ||
| 13 | 23 | ||
| 14 | /** | 24 | /** |
| 15 | * Created by HYB on 2017. 10. 11.. | 25 | * Created by HYB on 2017. 10. 11.. |
| ... | @@ -17,18 +27,79 @@ import android.view.ViewGroup; | ... | @@ -17,18 +27,79 @@ import android.view.ViewGroup; |
| 17 | 27 | ||
| 18 | public class Community extends Fragment { | 28 | public class Community extends Fragment { |
| 19 | 29 | ||
| 30 | + private RecyclerView mBlogList; | ||
| 31 | + private RecyclerView.LayoutManager layoutManager; | ||
| 32 | + private DatabaseReference mDatabase; | ||
| 20 | 33 | ||
| 21 | @Nullable | 34 | @Nullable |
| 22 | @Override | 35 | @Override |
| 23 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { | 36 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { |
| 24 | setHasOptionsMenu(true); | 37 | setHasOptionsMenu(true); |
| 25 | - return inflater.inflate(R.layout.community, container, false); | 38 | + |
| 39 | + View view = inflater.inflate(R.layout.community, container, false); | ||
| 40 | + | ||
| 41 | + mDatabase = FirebaseDatabase.getInstance().getReference().child("Blog"); | ||
| 42 | + | ||
| 43 | + mBlogList = (RecyclerView) view.findViewById(R.id.blog_list); | ||
| 44 | + mBlogList.setHasFixedSize(true); | ||
| 45 | + mBlogList.setLayoutManager(new LinearLayoutManager(getActivity())); | ||
| 46 | + | ||
| 47 | + return view; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + @Override | ||
| 51 | + public void onStart() { | ||
| 52 | + super.onStart(); | ||
| 53 | + | ||
| 54 | + FirebaseRecyclerAdapter<Blog, BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Blog, BlogViewHolder>( | ||
| 55 | + | ||
| 56 | + Blog.class, | ||
| 57 | + R.layout.blog_row, | ||
| 58 | + BlogViewHolder.class, | ||
| 59 | + mDatabase | ||
| 60 | + ) { | ||
| 61 | + @Override | ||
| 62 | + protected void populateViewHolder(BlogViewHolder viewHolder, Blog model, int position) { | ||
| 63 | + viewHolder.setTitle(model.getTitle()); | ||
| 64 | + viewHolder.setDesc(model.getDesc()); | ||
| 65 | + viewHolder.setImage(getActivity().getApplicationContext(), model.getImage()); | ||
| 66 | + } | ||
| 67 | + }; | ||
| 68 | + mBlogList.setAdapter(firebaseRecyclerAdapter); | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + public static class BlogViewHolder extends RecyclerView.ViewHolder{ | ||
| 72 | + | ||
| 73 | + View mView; | ||
| 74 | + | ||
| 75 | + public BlogViewHolder(View itemView) { | ||
| 76 | + super(itemView); | ||
| 77 | + | ||
| 78 | + mView = itemView; | ||
| 79 | + } | ||
| 80 | + public void setTitle(String title){ | ||
| 81 | + TextView post_title = (TextView) mView.findViewById(R.id.post_title); | ||
| 82 | + post_title.setText(title); | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + public void setDesc(String desc){ | ||
| 86 | + TextView post_desc = (TextView) mView.findViewById(R.id.post_desc); | ||
| 87 | + post_desc.setText(desc); | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + public void setImage(Context ctx, String image){ | ||
| 91 | + ImageView post_image = (ImageView) mView.findViewById(R.id.post_image); | ||
| 92 | + Picasso.with(ctx).load(image).into(post_image); | ||
| 93 | + | ||
| 94 | + } | ||
| 95 | + | ||
| 26 | } | 96 | } |
| 27 | 97 | ||
| 28 | @Override | 98 | @Override |
| 29 | public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { | 99 | public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { |
| 30 | inflater.inflate(R.menu.community_menu, menu); | 100 | inflater.inflate(R.menu.community_menu, menu); |
| 31 | super.onCreateOptionsMenu(menu, inflater); | 101 | super.onCreateOptionsMenu(menu, inflater); |
| 102 | + | ||
| 32 | } | 103 | } |
| 33 | 104 | ||
| 34 | @Override | 105 | @Override | ... | ... |
| ... | @@ -12,8 +12,12 @@ import android.view.View; | ... | @@ -12,8 +12,12 @@ import android.view.View; |
| 12 | import android.widget.Button; | 12 | import android.widget.Button; |
| 13 | import android.widget.EditText; | 13 | import android.widget.EditText; |
| 14 | import android.widget.ImageButton; | 14 | import android.widget.ImageButton; |
| 15 | +import android.widget.Toast; | ||
| 15 | 16 | ||
| 16 | import com.google.android.gms.tasks.OnSuccessListener; | 17 | import com.google.android.gms.tasks.OnSuccessListener; |
| 18 | +import com.google.firebase.auth.FirebaseAuth; | ||
| 19 | +import com.google.firebase.database.DatabaseReference; | ||
| 20 | +import com.google.firebase.database.FirebaseDatabase; | ||
| 17 | import com.google.firebase.storage.FirebaseStorage; | 21 | import com.google.firebase.storage.FirebaseStorage; |
| 18 | import com.google.firebase.storage.StorageReference; | 22 | import com.google.firebase.storage.StorageReference; |
| 19 | import com.google.firebase.storage.UploadTask; | 23 | import com.google.firebase.storage.UploadTask; |
| ... | @@ -32,6 +36,8 @@ public class PostActivity extends AppCompatActivity { | ... | @@ -32,6 +36,8 @@ public class PostActivity extends AppCompatActivity { |
| 32 | private static final int PERMISSIONS_REQUEST_READ_STORAGE = 100; | 36 | private static final int PERMISSIONS_REQUEST_READ_STORAGE = 100; |
| 33 | 37 | ||
| 34 | private StorageReference mStorage; | 38 | private StorageReference mStorage; |
| 39 | + private DatabaseReference mDatabase; | ||
| 40 | + private FirebaseAuth firebaseAuth; | ||
| 35 | 41 | ||
| 36 | private ProgressDialog mProgress; | 42 | private ProgressDialog mProgress; |
| 37 | 43 | ||
| ... | @@ -51,6 +57,8 @@ public class PostActivity extends AppCompatActivity { | ... | @@ -51,6 +57,8 @@ public class PostActivity extends AppCompatActivity { |
| 51 | mSubmitBtn = (Button) findViewById(R.id.submitBtn); | 57 | mSubmitBtn = (Button) findViewById(R.id.submitBtn); |
| 52 | 58 | ||
| 53 | mStorage = FirebaseStorage.getInstance().getReference(); | 59 | mStorage = FirebaseStorage.getInstance().getReference(); |
| 60 | + mDatabase = FirebaseDatabase.getInstance().getReference().child("Blog"); | ||
| 61 | + firebaseAuth = FirebaseAuth.getInstance(); | ||
| 54 | 62 | ||
| 55 | mProgress = new ProgressDialog(this); | 63 | mProgress = new ProgressDialog(this); |
| 56 | 64 | ||
| ... | @@ -75,8 +83,8 @@ public class PostActivity extends AppCompatActivity { | ... | @@ -75,8 +83,8 @@ public class PostActivity extends AppCompatActivity { |
| 75 | 83 | ||
| 76 | mProgress.setMessage("Posting to Blog ... "); | 84 | mProgress.setMessage("Posting to Blog ... "); |
| 77 | 85 | ||
| 78 | - String title_val = mPostTitle.getText().toString().trim(); | 86 | + final String title_val = mPostTitle.getText().toString().trim(); |
| 79 | - String desc_val = mPostDesc.getText().toString().trim(); | 87 | + final String desc_val = mPostDesc.getText().toString().trim(); |
| 80 | 88 | ||
| 81 | if(!TextUtils.isEmpty(title_val) && !TextUtils.isEmpty(desc_val) && mImageUri != null) { | 89 | if(!TextUtils.isEmpty(title_val) && !TextUtils.isEmpty(desc_val) && mImageUri != null) { |
| 82 | mProgress.show(); | 90 | mProgress.show(); |
| ... | @@ -86,7 +94,17 @@ public class PostActivity extends AppCompatActivity { | ... | @@ -86,7 +94,17 @@ public class PostActivity extends AppCompatActivity { |
| 86 | @Override | 94 | @Override |
| 87 | public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { | 95 | public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { |
| 88 | Uri downloadUrl = taskSnapshot.getDownloadUrl(); | 96 | Uri downloadUrl = taskSnapshot.getDownloadUrl(); |
| 97 | + | ||
| 98 | + DatabaseReference newPost = mDatabase.push(); | ||
| 99 | + newPost.child("title").setValue(title_val); | ||
| 100 | + newPost.child("desc").setValue(desc_val); | ||
| 101 | + newPost.child("image").setValue(downloadUrl.toString()); | ||
| 102 | + newPost.child("uid").setValue(firebaseAuth.getCurrentUser()); | ||
| 103 | + | ||
| 89 | mProgress.dismiss(); | 104 | mProgress.dismiss(); |
| 105 | + | ||
| 106 | + startActivity(new Intent(PostActivity.this, Main2Activity.class)); | ||
| 107 | + Toast.makeText(PostActivity.this, "Success!", Toast.LENGTH_LONG).show(); | ||
| 90 | } | 108 | } |
| 91 | }); | 109 | }); |
| 92 | } | 110 | } | ... | ... |
| ... | @@ -35,7 +35,7 @@ public class ProfileActivity extends AppCompatActivity implements View.OnClickLi | ... | @@ -35,7 +35,7 @@ public class ProfileActivity extends AppCompatActivity implements View.OnClickLi |
| 35 | startActivity(new Intent(this,LoginActivity.class)); | 35 | startActivity(new Intent(this,LoginActivity.class)); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | - databaseReference = FirebaseDatabase.getInstance().getReference(); | 38 | + databaseReference = FirebaseDatabase.getInstance().getReference().child("UserInfo"); |
| 39 | 39 | ||
| 40 | editTextAddress = (EditText) findViewById(R.id.editTextAddress); | 40 | editTextAddress = (EditText) findViewById(R.id.editTextAddress); |
| 41 | editTextName = (EditText)findViewById(R.id.editTextName); | 41 | editTextName = (EditText)findViewById(R.id.editTextName); | ... | ... |
app/src/main/res/layout/blog_row.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | ||
| 2 | +<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" | ||
| 3 | + xmlns:app="http://schemas.android.com/apk/res-auto" | ||
| 4 | + android:layout_width="match_parent" android:layout_height="wrap_content" | ||
| 5 | + android:layout_margin="20dp"> | ||
| 6 | + | ||
| 7 | + <LinearLayout | ||
| 8 | + android:layout_width="match_parent" | ||
| 9 | + android:layout_height="wrap_content" | ||
| 10 | + android:orientation="vertical" | ||
| 11 | + android:padding="0dp"> | ||
| 12 | + | ||
| 13 | + <ImageView | ||
| 14 | + android:id="@+id/post_image" | ||
| 15 | + android:layout_width="match_parent" | ||
| 16 | + android:layout_height="wrap_content" | ||
| 17 | + android:adjustViewBounds="true" | ||
| 18 | + android:padding="15dp" | ||
| 19 | + android:scaleType="centerCrop" | ||
| 20 | + app:srcCompat="@mipmap/add_btn" /> | ||
| 21 | + | ||
| 22 | + <TextView | ||
| 23 | + android:id="@+id/post_title" | ||
| 24 | + android:layout_width="match_parent" | ||
| 25 | + android:layout_height="wrap_content" | ||
| 26 | + android:padding="15dp" | ||
| 27 | + android:text="post title in here" /> | ||
| 28 | + | ||
| 29 | + <TextView | ||
| 30 | + android:id="@+id/post_desc" | ||
| 31 | + android:layout_width="match_parent" | ||
| 32 | + android:layout_height="wrap_content" | ||
| 33 | + android:padding="10dp" | ||
| 34 | + android:paddingLeft="5dp" | ||
| 35 | + android:paddingRight="5dp" | ||
| 36 | + android:text="post description" /> | ||
| 37 | + </LinearLayout> | ||
| 38 | +</android.support.v7.widget.CardView> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -4,4 +4,9 @@ | ... | @@ -4,4 +4,9 @@ |
| 4 | android:layout_height="match_parent" | 4 | android:layout_height="match_parent" |
| 5 | android:orientation="horizontal"> | 5 | android:orientation="horizontal"> |
| 6 | 6 | ||
| 7 | + <android.support.v7.widget.RecyclerView | ||
| 8 | + android:layout_width="match_parent" | ||
| 9 | + android:layout_height="match_parent" | ||
| 10 | + android:id="@+id/blog_list"></android.support.v7.widget.RecyclerView> | ||
| 11 | + | ||
| 7 | </LinearLayout> | 12 | </LinearLayout> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment