Advertisement
Cakepops

IndexOutOfBounds

Jan 8th, 2018
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.83 KB | None | 0 0
  1.  
  2.  
  3. //region Constructors
  4.  
  5. public ConversationRecyclerAdapter(Context _ctx){
  6. this.mContext = _ctx;
  7. }
  8.  
  9. public ConversationRecyclerAdapter(Context _ctx, View _emptyView){
  10. this.mContext = _ctx;
  11. this.emptyView = _emptyView;
  12. this.selectedItems = new SparseBooleanArray();
  13. this.mRefreshBroadcast = new BroadcastReceiver() {
  14. @Override
  15. public void onReceive(Context context, Intent intent) {
  16.  
  17. if (intent.getAction().equals(GCMPrefs.REFRESH_BUDDIES)) {
  18. if (mType == Connection.BUDDIES)
  19. loadAdapter(Connection.BUDDIES, 1, 30);
  20. }
  21.  
  22. }
  23. };
  24.  
  25. User me = UserHelper.getCurrentUser();
  26.  
  27. mUnreadAPPs = me.getUnread_hitheres();
  28. mUnreadConversations = me.getUnread_conversations();
  29. }
  30.  
  31. //endregion
  32.  
  33. //region Implementation Methods
  34.  
  35. @Override
  36. public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  37.  
  38. View view;
  39. RecyclerView.ViewHolder vh;
  40.  
  41. switch (viewType){
  42. case Connection.BUDDIES:
  43. view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_conversation, parent, false);
  44. vh = new ConversationViewHolder(view, getChatsAdapterListener());
  45. break;
  46. case Connection.SECTION:
  47. view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_header, parent, false);
  48. vh = new SectionedViewHolder(view);
  49. break;
  50. case Connection.MATCHES:
  51. view = LayoutInflater.from(parent.getContext()).inflate(R.layout.new_matches_layout, parent, false);
  52. vh = new NewMatchesViewHolder(view, getChatsAdapterListener());
  53. break;
  54. default:
  55. view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_conversation, parent, false);
  56. vh = new ConversationViewHolder(view, getChatsAdapterListener());
  57. break;
  58.  
  59. }
  60.  
  61. return vh;
  62. }
  63.  
  64. @Override
  65. public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  66.  
  67.  
  68. final int type = getItemViewType(position);
  69.  
  70. if (type == Connection.BUDDIES) {
  71. final Conversation conversation = getItem(position);
  72. ((ConversationViewHolder) holder).bindHolder(conversation, mContext);
  73. }
  74. if(type == Connection.SECTION)
  75. ((SectionedViewHolder) holder).bindHolder(sectionHeader, mContext);
  76. if(type == Connection.MATCHES)
  77. ((NewMatchesViewHolder) holder).bindHolder(mContext);
  78. }
  79.  
  80. @Override
  81. public int getItemViewType(int position) {
  82. if(hasNewMatches && position == 1){
  83. return Connection.MATCHES;
  84. } else if(getItem(position).isSectionHeader()){
  85. sectionHeader.setSectionHeader(true);
  86. sectionHeader.setName(getItem(position).getSection_title());
  87. return Connection.SECTION;
  88. } else {
  89. return Connection.BUDDIES;
  90. }
  91. }
  92.  
  93. @Override
  94. public int getItemCount() {
  95. return mConversations.size();
  96. }
  97.  
  98. //endregion
  99.  
  100. //region Additional Helpers
  101.  
  102. public void setmType(int _type){
  103. this.mType = _type;
  104. }
  105.  
  106. private Conversation getItem(int position){
  107. return mConversations.get(position);
  108. }
  109.  
  110. public void handleEmptyViewState(){
  111.  
  112. if (emptyView == null){
  113. return;
  114. }
  115.  
  116. if (getItemCount() == 0 && !loadingChatsList){
  117. emptyView.setVisibility(View.VISIBLE);
  118. }else{
  119. emptyView.setVisibility(View.GONE);
  120. }
  121.  
  122. }
  123.  
  124. public int getPageNum() {
  125. return pageNum;
  126. }
  127.  
  128. private void hideProgressBar(){
  129. if(loading == null){
  130. return;
  131. }
  132.  
  133. loading.setVisibility(View.GONE);
  134. }
  135.  
  136. @Override
  137. public void onLoadMore() {
  138. loadingMore = true;
  139. loadAdapter(Connection.BUDDIES, getPageNum() + 1, 30);
  140. }
  141.  
  142. /** Data Methods **/
  143. public void loadAdapter(final int type, final int page, final int count){
  144. pageNum = page;
  145. loadingChatsList = true;
  146. if(!loadingMore){
  147. mConversations.clear();
  148. }
  149. final APPAES myappAES = new APPAES();
  150. myappAES.setmAESListener(new APPAES.AESListener() {
  151. @Override
  152. public void onKeyReady(boolean isReady) {
  153.  
  154. if (isReady){
  155. ConversationsCallBack callback = new ConversationsCallBack();
  156. callback.setAPPAES(myappAES);
  157.  
  158. switch (type) {
  159. case Connection.BUDDIES:
  160. ApiClient.getClient().conversations(page, count, myappAES.getAppResult(), callback);
  161. break;
  162. default:
  163. break;
  164. }
  165. } else {
  166. //
  167. }
  168. }
  169. });
  170. myappAES.getKey();
  171. }
  172.  
  173.  
  174. public List<Conversation> getItems(){
  175.  
  176. List<Conversation> list = new ArrayList<>();
  177. List<Integer> selectedItemPositions = getSelectedItems();
  178. for (int i = 0; i < selectedItemPositions.size(); i++){
  179. list.add(mConversations.get(selectedItemPositions.get(i)));
  180.  
  181. }
  182.  
  183. return list;
  184. }
  185.  
  186. public void removeItem(int position){
  187.  
  188. if (mConversations.size() > position) {
  189. mConversations.remove(position);
  190. notifyItemRemoved(position);
  191. }
  192.  
  193. }
  194.  
  195. public void removeItem(Conversation conversation){
  196.  
  197. if (mConversations.contains(conversation)){
  198. int i = mConversations.indexOf(conversation);
  199. mConversations.remove(conversation);
  200. notifyItemRemoved(i);
  201. }
  202.  
  203. }
  204.  
  205. public void setRefreshLayout(SwipeRefreshLayout refreshLayout){
  206. this.refreshLayout = refreshLayout;
  207. }
  208.  
  209. public void setProgressBar(ProgressBar progressBar){
  210. this.loading = progressBar;
  211. }
  212.  
  213. //endregion
  214.  
  215. //region ActionMode
  216.  
  217. private SparseBooleanArray selectedItems;
  218.  
  219.  
  220. public void toggleSelection(int pos) {
  221.  
  222. try {
  223. if (selectedItems.get(pos, false)) {
  224. selectedItems.delete(pos);
  225. mConversations.get(pos).setSelected(false);
  226. } else {
  227. selectedItems.put(pos, true);
  228. mConversations.get(pos).setSelected(true);
  229. }
  230.  
  231. notifyItemChanged(pos);
  232. } catch(Exception e) {
  233. e.printStackTrace();
  234. }
  235. }
  236.  
  237. public void clearSelections() {
  238. selectedItems.clear();
  239.  
  240. for (int i = 0; i < mConversations.size(); i++) {
  241. Conversation con = getItem(i);
  242.  
  243. if (con.isSelected()){
  244. con.setSelected(false);
  245. }
  246. }
  247.  
  248. notifyDataSetChanged();
  249. }
  250.  
  251. public int getSelectedItemCount() {
  252. return selectedItems.size();
  253. }
  254.  
  255. public List<Integer> getSelectedItems() {
  256. List<Integer> items =
  257. new ArrayList<Integer>(selectedItems.size());
  258. for (int i = 0; i < selectedItems.size(); i++) {
  259. items.add(selectedItems.keyAt(i));
  260. }
  261. return items;
  262. }
  263.  
  264. //endregion
  265.  
  266. //region Class Helpers
  267.  
  268.  
  269. public void clearData(){
  270.  
  271. SharedPreferences conversationsPref = mContext.getSharedPreferences("MATCHES", Context.MODE_PRIVATE);
  272. SharedPreferences.Editor editor = conversationsPref.edit();
  273. editor.clear();
  274. editor.commit();
  275. notifyDataSetChanged();
  276.  
  277. }
  278.  
  279.  
  280.  
  281.  
  282.  
  283. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement