Guest User

Adapter

a guest
Jan 22nd, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.87 KB | None | 0 0
  1. package com.aye.chat.Topics;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.support.v7.widget.RecyclerView;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.Button;
  10. import android.widget.ImageView;
  11. import android.widget.PopupMenu;
  12. import android.widget.TextView;
  13.  
  14. import com.aye.chat.Pages.FullScreenImageView;
  15. import com.aye.chat.ProfileView;
  16. import com.aye.chat.R;
  17. import com.aye.chat.Rooms.ChatRoom;
  18. import com.aye.chat.Updated.Discussion;
  19. import com.bumptech.glide.Glide;
  20. import com.bumptech.glide.load.engine.DiskCacheStrategy;
  21. import com.google.firebase.database.DataSnapshot;
  22. import com.google.firebase.database.DatabaseError;
  23. import com.google.firebase.database.FirebaseDatabase;
  24. import com.google.firebase.database.ValueEventListener;
  25. import com.like.LikeButton;
  26. import com.like.OnLikeListener;
  27.  
  28. import java.util.ArrayList;
  29. import java.util.Collections;
  30.  
  31. import de.hdodenhof.circleimageview.CircleImageView;
  32.  
  33. public class TopicsAdapter extends RecyclerView.Adapter<TopicsAdapter.ViewHolder>{
  34. Context c;
  35. ArrayList<Topic> topics = new ArrayList<>();
  36. private String username;
  37.  
  38. public TopicsAdapter(Context c,String username) {
  39. this.c = c;
  40. this.username = username;
  41. }
  42.  
  43. public void updateList(ArrayList<Topic> d){
  44.  
  45. topics.addAll(d);
  46. notifyDataSetChanged();
  47. }
  48.  
  49. @Override
  50. public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  51. View v = LayoutInflater.from (parent.getContext ()).inflate (R.layout.topic_card, parent, false);
  52. return new ViewHolder (v);
  53. }
  54.  
  55. @Override
  56. public void onBindViewHolder(final ViewHolder holder, final int position) {
  57.  
  58. final PopupMenu p = new PopupMenu(c,holder.more);
  59. p.getMenuInflater().inflate(R.menu.topic_menu, p.getMenu());
  60. final Topic data = topics.get(position);
  61. holder.text.setText(data.getCaption());
  62. holder.name.setText(data.getUsername());
  63. String id = data.getId();
  64. //holder.category.setText(data.getCaption());
  65. long millis = System.currentTimeMillis();
  66. long posttime = data.getTime();
  67. long timedifference = millis-posttime;
  68. final int days = (int) (timedifference / (1000*60*60*24));
  69. if (days<2){
  70. holder.time.setText("Today");
  71. }else {
  72. holder.time.setText(days+" days ago");
  73. }
  74. FirebaseDatabase.getInstance().getReference().child("userdata").child(data.getUsername()).child("pic").addListenerForSingleValueEvent(new ValueEventListener() {
  75. @Override
  76. public void onDataChange(DataSnapshot dataSnapshot) {
  77. Glide.with(c).load(dataSnapshot.getValue(String.class))
  78. .override(50,50)
  79. .dontAnimate()
  80. .placeholder(R.drawable.dog40)
  81. .skipMemoryCache(true)
  82. .centerCrop()
  83. .into(holder.pic);
  84. }
  85.  
  86. @Override
  87. public void onCancelled(DatabaseError databaseError) {
  88.  
  89. }
  90. });
  91. //holder.count.setText(d.child("time").getValue(String.class));
  92. FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).addValueEventListener(new ValueEventListener() {
  93. @Override
  94. public void onDataChange(DataSnapshot dataSnapshot) {
  95. if (dataSnapshot.child("like").exists()){
  96.  
  97. holder.like.setImageResource(R.drawable.ic_favorite_red_500_36dp);
  98. holder.like.setOnClickListener(new View.OnClickListener() {
  99. @Override
  100. public void onClick(View view) {
  101. FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("like").removeValue();
  102.  
  103. }
  104. });
  105.  
  106. }else if(dataSnapshot.child("dislike").exists()) {
  107.  
  108. holder.like.setImageResource(R.drawable.brokenheart);
  109. holder.like.setOnClickListener(new View.OnClickListener() {
  110. @Override
  111. public void onClick(View view) {
  112. FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("dislike").removeValue();
  113.  
  114. }
  115. });
  116. }else{
  117. holder.like.setImageResource(R.drawable.ic_favorite_border_red_500_36dp);
  118. holder.like.setOnClickListener(new View.OnClickListener() {
  119. @Override
  120. public void onClick(View view) {
  121. FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("dislike").removeValue();
  122. FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("like").setValue(true);
  123.  
  124. }
  125. });
  126.  
  127.  
  128. }
  129.  
  130.  
  131. }
  132.  
  133. @Override
  134. public void onCancelled(DatabaseError databaseError) {
  135.  
  136. }
  137. });
  138.  
  139. holder.like.setOnLongClickListener(new View.OnLongClickListener() {
  140. @Override
  141. public boolean onLongClick(View view) {
  142. FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("like").removeValue();
  143. FirebaseDatabase.getInstance().getReference().child("topics").child("likes").child(data.getId()).child(username).child("dislike").setValue(true);
  144.  
  145. return true;
  146. }
  147. });
  148. //holder.count.setText(d.child("count").getValue(String.class));
  149.  
  150. holder.discuss.setOnClickListener(new View.OnClickListener() {
  151. @Override
  152. public void onClick(View view) {
  153. Intent i = new Intent(c, Discussion.class);
  154. i.putExtra("id", data.getId());
  155. i.putExtra("user", data.getUsername());
  156. i.putExtra("caption", data.getCaption());
  157. i.putExtra("pic",data.getPic());
  158. i.putExtra("time",holder.time.getText());
  159.  
  160. c.startActivity(i);
  161. }
  162. });
  163. holder.pic.setOnClickListener(new View.OnClickListener() {
  164. @Override
  165. public void onClick(View view) {
  166. Intent i2 = new Intent(c, ProfileView.class);
  167. i2.putExtra("username", data.getUsername());
  168. i2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  169. c.startActivity(i2);
  170. }
  171. });
  172.  
  173. holder.more.setOnClickListener(new View.OnClickListener() {
  174. @Override
  175. public void onClick(View view) {
  176. p.show();
  177. }
  178. });
  179.  
  180. }
  181.  
  182. @Override
  183. public void setHasStableIds(boolean hasStableIds) {
  184. super.setHasStableIds(hasStableIds);
  185. }
  186.  
  187.  
  188.  
  189. @Override
  190. public int getItemCount() {
  191. if (topics!=null)
  192. return topics.size();
  193. else
  194. return 0;
  195. }
  196. @Override
  197. public void onViewRecycled(ViewHolder holder) {
  198. super.onViewRecycled(holder);
  199. Glide.clear(holder.pic);
  200. }
  201.  
  202. @Override
  203. public long getItemId(int position) {
  204. return super.getItemId(position);
  205. }
  206.  
  207. @Override
  208. public int getItemViewType(int position) {
  209. return super.getItemViewType(position);
  210. }
  211. public class ViewHolder extends RecyclerView.ViewHolder {
  212. private TextView text;
  213. private ImageView image;
  214. private TextView name;
  215. private TextView time;
  216. private TextView category;
  217. private ImageView more;
  218. private TextView count;
  219. private CircleImageView pic;
  220. private ImageView like;
  221. private Button discuss;
  222.  
  223.  
  224. private Button msg;
  225.  
  226.  
  227. public ViewHolder(View itemView) {
  228. super (itemView);
  229. text = itemView.findViewById(R.id.caption);
  230. name = itemView.findViewById(R.id.name);
  231. time = itemView.findViewById(R.id.time);
  232. category = itemView.findViewById(R.id.category);
  233. more = itemView.findViewById(R.id.more);
  234. count = itemView.findViewById(R.id.count);
  235. pic = itemView.findViewById(R.id.icon);
  236. like = itemView.findViewById(R.id.like_button);
  237. discuss = itemView.findViewById(R.id.discuss);
  238. count = itemView.findViewById(R.id.count);
  239.  
  240. }
  241. }
  242.  
  243.  
  244. }
Add Comment
Please, Sign In to add comment