Advertisement
WallaceRobertoc

Untitled

Dec 31st, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.85 KB | None | 0 0
  1. package com.robertoc.test;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.support.annotation.NonNull;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.os.Bundle;
  8. import android.support.v7.widget.LinearLayoutManager;
  9. import android.support.v7.widget.RecyclerView;
  10. import android.view.Menu;
  11. import android.view.MenuItem;
  12. import android.view.View;
  13. import android.widget.ImageButton;
  14. import android.widget.ImageView;
  15. import android.widget.TextView;
  16.  
  17. import com.firebase.ui.database.FirebaseRecyclerAdapter;
  18. import com.google.firebase.auth.FirebaseAuth;
  19. import com.google.firebase.database.DataSnapshot;
  20. import com.google.firebase.database.DatabaseError;
  21. import com.google.firebase.database.DatabaseReference;
  22. import com.google.firebase.database.FirebaseDatabase;
  23. import com.google.firebase.database.Query;
  24. import com.google.firebase.database.ValueEventListener;
  25. import com.squareup.picasso.Callback;
  26. import com.squareup.picasso.NetworkPolicy;
  27. import com.squareup.picasso.Picasso;
  28.  
  29. public class MainActivity extends AppCompatActivity {
  30.  
  31. private RecyclerView mLista_Blog;
  32. private DatabaseReference mDatabase;
  33. private FirebaseAuth mAuth;
  34. private FirebaseAuth.AuthStateListener mAuthListener;
  35. private DatabaseReference mDatabaseUsuarios;
  36. private boolean mProcessLike = false;
  37. private DatabaseReference mDatabaseLike;
  38. private DatabaseReference mDatabaseCurrentUSer;
  39. private Query mQueryCurrentUser;
  40.  
  41. protected void onCreate(Bundle savedInstanceState) {
  42. super.onCreate(savedInstanceState);
  43. setContentView(R.layout.activity_main);
  44.  
  45. mAuth = FirebaseAuth.getInstance();
  46. mAuthListener = new FirebaseAuth.AuthStateListener() {
  47. @Override
  48. public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
  49. if (firebaseAuth.getCurrentUser() == null){
  50.  
  51. Intent loginIntent = new Intent(MainActivity.this, Entrar.class);
  52. loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  53. startActivity(loginIntent);
  54. }
  55. }};
  56.  
  57.  
  58. mDatabase = FirebaseDatabase.getInstance().getReference().child("Blog");
  59. mDatabaseUsuarios = FirebaseDatabase.getInstance().getReference().child("Usuarios");
  60. mDatabaseLike = FirebaseDatabase.getInstance().getReference().child("Likes");
  61.  
  62. String currentUserId = mAuth.getCurrentUser().getUid();
  63.  
  64. mDatabaseCurrentUSer = FirebaseDatabase.getInstance().getReference().child("Blog");
  65.  
  66. mQueryCurrentUser = mDatabaseCurrentUSer.orderByChild("uid").equalTo(currentUserId);
  67.  
  68. mDatabase.keepSynced(true);
  69. mDatabaseLike.keepSynced(true);
  70. mDatabaseUsuarios.keepSynced(true);
  71.  
  72.  
  73. mLista_Blog = (RecyclerView) findViewById(R.id.lista_blog);
  74. LinearLayoutManager layoutManager = new LinearLayoutManager(this);
  75. layoutManager.setReverseLayout(true);
  76. layoutManager.setStackFromEnd(true);
  77.  
  78. mLista_Blog.setHasFixedSize(true);
  79. mLista_Blog.setLayoutManager(new LinearLayoutManager(this));
  80.  
  81.  
  82.  
  83.  
  84. checkUserExist();
  85.  
  86. }
  87.  
  88. @Override
  89. protected void onStart(){
  90. super.onStart();
  91.  
  92. mAuth.addAuthStateListener(mAuthListener);
  93.  
  94. FirebaseRecyclerAdapter<Blog, BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Blog, BlogViewHolder>(
  95. Blog.class,
  96. R.layout.blog_row,
  97. BlogViewHolder.class,
  98. mQueryCurrentUser
  99.  
  100.  
  101.  
  102. ) {
  103. @Override
  104. protected void populateViewHolder(BlogViewHolder viewHolder, Blog model,final int position) {
  105.  
  106. final String post_key = getRef(position).getKey();
  107.  
  108. viewHolder.setTitulo(model.getTitulo());
  109. viewHolder.setConteudo(model.getConteudo());
  110. viewHolder.setImagem(getApplicationContext(),model.getImagem());
  111. viewHolder.setUsername(model.getUsername());
  112. viewHolder.setmLikeBtn(post_key);
  113.  
  114.  
  115. viewHolder.mView.setOnClickListener(new View.OnClickListener() {
  116.  
  117.  
  118. @Override
  119. public void onClick(View view) {
  120. //Toast.makeText(MainActivity.this, post_key, Toast.LENGTH_LONG).show();
  121. Intent singleBlogIntent = new Intent(MainActivity.this, BlogSingleActivity.class);
  122. singleBlogIntent.putExtra("blog_id", post_key );
  123. startActivity(singleBlogIntent);
  124.  
  125. }
  126. });
  127.  
  128. viewHolder.mLikeBtn.setOnClickListener(new View.OnClickListener() {
  129. @Override
  130. public void onClick(View view) {
  131.  
  132. mProcessLike = true;
  133.  
  134.  
  135. mDatabaseLike.addValueEventListener(new ValueEventListener() {
  136. @Override
  137. public void onDataChange(DataSnapshot dataSnapshot) {
  138.  
  139. if (mProcessLike ){
  140.  
  141. if(dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())){
  142.  
  143. mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();
  144. mProcessLike = false;
  145. } else {
  146.  
  147. mDatabaseLike.child(post_key).child(mAuth.getCurrentUser().getUid()).setValue("RandomValue");
  148. mProcessLike = false;
  149. }
  150.  
  151. }}
  152.  
  153. @Override
  154. public void onCancelled(DatabaseError databaseError) {
  155.  
  156. }
  157. });
  158.  
  159. }
  160. });
  161.  
  162. }
  163. };
  164.  
  165. mLista_Blog.setAdapter(firebaseRecyclerAdapter);
  166.  
  167. }
  168.  
  169. private void checkUserExist() {
  170.  
  171.  
  172. if(mAuth.getCurrentUser()!= null ){
  173.  
  174. final String user_id = mAuth.getCurrentUser().getUid();
  175.  
  176. mDatabaseUsuarios.addValueEventListener(new ValueEventListener() {
  177. @Override
  178. public void onDataChange(DataSnapshot dataSnapshot) {
  179.  
  180.  
  181. if(!dataSnapshot.hasChild(user_id)) {
  182.  
  183. Intent mainIntent = new Intent(MainActivity.this, Entrar.class);
  184. mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  185. startActivity(mainIntent);
  186.  
  187.  
  188.  
  189. }
  190. }
  191.  
  192.  
  193. @Override
  194. public void onCancelled(DatabaseError databaseError) {
  195.  
  196.  
  197. }});}}
  198.  
  199.  
  200. public static class BlogViewHolder extends RecyclerView.ViewHolder{
  201.  
  202. View mView;
  203.  
  204. ImageButton mLikeBtn;
  205.  
  206. DatabaseReference mDatabaseLike;
  207. FirebaseAuth mAuth;
  208.  
  209.  
  210. public BlogViewHolder(View itemView) {
  211. super(itemView);
  212.  
  213. mView = itemView;
  214.  
  215. mLikeBtn = (ImageButton) mView.findViewById(R.id.like_Btm);
  216.  
  217. mDatabaseLike = FirebaseDatabase.getInstance().getReference().child("Likes");
  218. mAuth = FirebaseAuth.getInstance();
  219.  
  220. mDatabaseLike.keepSynced(true);
  221.  
  222.  
  223. }
  224. public void setmLikeBtn(final String post_key){
  225.  
  226. mDatabaseLike.addValueEventListener(new ValueEventListener() {
  227. @Override
  228. public void onDataChange(DataSnapshot dataSnapshot) {
  229. if(dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())){
  230.  
  231. mLikeBtn.setImageResource(R.drawable.ic_thumb_up_blacka_24dp);
  232.  
  233.  
  234. } else {
  235. mLikeBtn.setImageResource(R.drawable.ic_thumb_up_black_24dp);
  236.  
  237. }
  238.  
  239.  
  240. }
  241.  
  242. @Override
  243. public void onCancelled(DatabaseError databaseError) {
  244.  
  245. }
  246. });
  247.  
  248.  
  249.  
  250. }
  251.  
  252.  
  253.  
  254.  
  255. public void setTitulo(String titulo){
  256.  
  257. TextView post_titulo = (TextView) mView.findViewById(R.id.blogSingleTitle);
  258. post_titulo.setText(titulo);
  259. }
  260.  
  261. public void setConteudo (String conteudo){
  262.  
  263. TextView setConteudo = (TextView) mView.findViewById(R.id.post_conteudo);
  264. setConteudo.setText(conteudo);
  265. }
  266.  
  267. private void setUsername(String username){
  268.  
  269. TextView post_Username = (TextView) mView.findViewById(R.id.post_username);
  270. post_Username.setText(username);
  271.  
  272.  
  273. }
  274.  
  275. public void setImagem(final Context ctx, final String imagem){
  276.  
  277. final ImageView post_imagem = (ImageView) mView.findViewById(R.id.blogSingliImage);
  278. //Picasso.with(ctx).load(imagem).into(post_imagem);
  279.  
  280. Picasso.with(ctx).load(imagem).networkPolicy(NetworkPolicy.OFFLINE).into(post_imagem, new Callback() {
  281. @Override
  282. public void onSuccess() {
  283.  
  284. }
  285.  
  286. @Override
  287. public void onError() {
  288.  
  289. Picasso.with(ctx).load(imagem).into(post_imagem);
  290. }
  291. });
  292.  
  293.  
  294. }
  295.  
  296. }
  297.  
  298.  
  299.  
  300.  
  301. public boolean onCreateOptionsMenu(Menu menu) {
  302. getMenuInflater().inflate(R.menu.meu_menu, menu);
  303. return super.onCreateOptionsMenu(menu);
  304.  
  305.  
  306.  
  307. }
  308.  
  309. @Override
  310. public boolean onOptionsItemSelected(MenuItem item) {
  311. if (item.getItemId() == R.id.barra_de_acao){
  312.  
  313. startActivity(new Intent(MainActivity.this, Postar.class));
  314.  
  315.  
  316. }
  317. if (item.getItemId() == R.id.action_sair) {
  318.  
  319. sair();
  320.  
  321. }
  322. return super.onOptionsItemSelected(item);
  323. }
  324.  
  325.  
  326. private void sair() {
  327.  
  328. mAuth.signOut();
  329. }
  330. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement