Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //region Constructors
- public ConversationRecyclerAdapter(Context _ctx){
- this.mContext = _ctx;
- }
- public ConversationRecyclerAdapter(Context _ctx, View _emptyView){
- this.mContext = _ctx;
- this.emptyView = _emptyView;
- this.selectedItems = new SparseBooleanArray();
- this.mRefreshBroadcast = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equals(GCMPrefs.REFRESH_BUDDIES)) {
- if (mType == Connection.BUDDIES)
- loadAdapter(Connection.BUDDIES, 1, 30);
- }
- }
- };
- User me = UserHelper.getCurrentUser();
- mUnreadAPPs = me.getUnread_hitheres();
- mUnreadConversations = me.getUnread_conversations();
- }
- //endregion
- //region Implementation Methods
- @Override
- public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View view;
- RecyclerView.ViewHolder vh;
- switch (viewType){
- case Connection.BUDDIES:
- view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_conversation, parent, false);
- vh = new ConversationViewHolder(view, getChatsAdapterListener());
- break;
- case Connection.SECTION:
- view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_header, parent, false);
- vh = new SectionedViewHolder(view);
- break;
- case Connection.MATCHES:
- view = LayoutInflater.from(parent.getContext()).inflate(R.layout.new_matches_layout, parent, false);
- vh = new NewMatchesViewHolder(view, getChatsAdapterListener());
- break;
- default:
- view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_conversation, parent, false);
- vh = new ConversationViewHolder(view, getChatsAdapterListener());
- break;
- }
- return vh;
- }
- @Override
- public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
- final int type = getItemViewType(position);
- if (type == Connection.BUDDIES) {
- final Conversation conversation = getItem(position);
- ((ConversationViewHolder) holder).bindHolder(conversation, mContext);
- }
- if(type == Connection.SECTION)
- ((SectionedViewHolder) holder).bindHolder(sectionHeader, mContext);
- if(type == Connection.MATCHES)
- ((NewMatchesViewHolder) holder).bindHolder(mContext);
- }
- @Override
- public int getItemViewType(int position) {
- if(hasNewMatches && position == 1){
- return Connection.MATCHES;
- } else if(getItem(position).isSectionHeader()){
- sectionHeader.setSectionHeader(true);
- sectionHeader.setName(getItem(position).getSection_title());
- return Connection.SECTION;
- } else {
- return Connection.BUDDIES;
- }
- }
- @Override
- public int getItemCount() {
- return mConversations.size();
- }
- //endregion
- //region Additional Helpers
- public void setmType(int _type){
- this.mType = _type;
- }
- private Conversation getItem(int position){
- return mConversations.get(position);
- }
- public void handleEmptyViewState(){
- if (emptyView == null){
- return;
- }
- if (getItemCount() == 0 && !loadingChatsList){
- emptyView.setVisibility(View.VISIBLE);
- }else{
- emptyView.setVisibility(View.GONE);
- }
- }
- public int getPageNum() {
- return pageNum;
- }
- private void hideProgressBar(){
- if(loading == null){
- return;
- }
- loading.setVisibility(View.GONE);
- }
- @Override
- public void onLoadMore() {
- loadingMore = true;
- loadAdapter(Connection.BUDDIES, getPageNum() + 1, 30);
- }
- /** Data Methods **/
- public void loadAdapter(final int type, final int page, final int count){
- pageNum = page;
- loadingChatsList = true;
- if(!loadingMore){
- mConversations.clear();
- }
- final APPAES myappAES = new APPAES();
- myappAES.setmAESListener(new APPAES.AESListener() {
- @Override
- public void onKeyReady(boolean isReady) {
- if (isReady){
- ConversationsCallBack callback = new ConversationsCallBack();
- callback.setAPPAES(myappAES);
- switch (type) {
- case Connection.BUDDIES:
- ApiClient.getClient().conversations(page, count, myappAES.getAppResult(), callback);
- break;
- default:
- break;
- }
- } else {
- //
- }
- }
- });
- myappAES.getKey();
- }
- public List<Conversation> getItems(){
- List<Conversation> list = new ArrayList<>();
- List<Integer> selectedItemPositions = getSelectedItems();
- for (int i = 0; i < selectedItemPositions.size(); i++){
- list.add(mConversations.get(selectedItemPositions.get(i)));
- }
- return list;
- }
- public void removeItem(int position){
- if (mConversations.size() > position) {
- mConversations.remove(position);
- notifyItemRemoved(position);
- }
- }
- public void removeItem(Conversation conversation){
- if (mConversations.contains(conversation)){
- int i = mConversations.indexOf(conversation);
- mConversations.remove(conversation);
- notifyItemRemoved(i);
- }
- }
- public void setRefreshLayout(SwipeRefreshLayout refreshLayout){
- this.refreshLayout = refreshLayout;
- }
- public void setProgressBar(ProgressBar progressBar){
- this.loading = progressBar;
- }
- //endregion
- //region ActionMode
- private SparseBooleanArray selectedItems;
- public void toggleSelection(int pos) {
- try {
- if (selectedItems.get(pos, false)) {
- selectedItems.delete(pos);
- mConversations.get(pos).setSelected(false);
- } else {
- selectedItems.put(pos, true);
- mConversations.get(pos).setSelected(true);
- }
- notifyItemChanged(pos);
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- public void clearSelections() {
- selectedItems.clear();
- for (int i = 0; i < mConversations.size(); i++) {
- Conversation con = getItem(i);
- if (con.isSelected()){
- con.setSelected(false);
- }
- }
- notifyDataSetChanged();
- }
- public int getSelectedItemCount() {
- return selectedItems.size();
- }
- public List<Integer> getSelectedItems() {
- List<Integer> items =
- new ArrayList<Integer>(selectedItems.size());
- for (int i = 0; i < selectedItems.size(); i++) {
- items.add(selectedItems.keyAt(i));
- }
- return items;
- }
- //endregion
- //region Class Helpers
- public void clearData(){
- SharedPreferences conversationsPref = mContext.getSharedPreferences("MATCHES", Context.MODE_PRIVATE);
- SharedPreferences.Editor editor = conversationsPref.edit();
- editor.clear();
- editor.commit();
- notifyDataSetChanged();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement