package com.jasonchen.microlang.fragments; import android.content.Intent; import android.media.AudioManager; import android.media.SoundPool; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.ClipboardManager; import android.text.Layout; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.PopupMenu; import android.widget.Toast; import com.jasonchen.microlang.R; import com.jasonchen.microlang.activitys.AccountActivity; import com.jasonchen.microlang.activitys.MainActivity; import com.jasonchen.microlang.activitys.WriteCommentActivity; import com.jasonchen.microlang.activitys.WriteRepostActivity; import com.jasonchen.microlang.adapter.TimeLineAdapter; import com.jasonchen.microlang.beans.AccountBean; import com.jasonchen.microlang.beans.GroupBean; import com.jasonchen.microlang.beans.GroupListBean; import com.jasonchen.microlang.beans.MessageBean; import com.jasonchen.microlang.beans.MessageListBean; import com.jasonchen.microlang.beans.UserBean; import com.jasonchen.microlang.dao.BilateralTimeLineDao; import com.jasonchen.microlang.dao.FriendGroupDao; import com.jasonchen.microlang.dao.FriendGroupTimeLineDao; import com.jasonchen.microlang.dao.MainFriendsTimeLineDao; import com.jasonchen.microlang.database.FriendsTimeLineDBTask; import com.jasonchen.microlang.database.GroupDBTask; import com.jasonchen.microlang.database.HomeOtherGroupTimeLineDBTask; import com.jasonchen.microlang.debug.AppLogger; import com.jasonchen.microlang.exception.WeiboException; import com.jasonchen.microlang.tasks.MyAsyncTask; import com.jasonchen.microlang.utils.GlobalContext; import com.jasonchen.microlang.utils.SettingUtility; import com.jasonchen.microlang.utils.Utility; import com.jasonchen.microlang.workers.TimeLineBitmapDownloader; import java.util.ArrayList; import java.util.List; import me.drakeet.materialdialog.MaterialDialog; /** * jasonchen * 2015/04/16 */ public class TimeLineFragment extends TimeLineBaseFragment { private static final String ARGUMENTS_ACCOUNT_EXTRA = TimeLineFragment.class .getName() + ":account_extra"; private static final String ARGUMENTS_USER_EXTRA = TimeLineFragment.class .getName() + ":userBean_extra"; private static final String ARGUMENTS_TOKEN_EXTRA = TimeLineFragment.class .getName() + ":token_extra"; private static final int FIRST_LOAD_TIMELINE_FROM_INTERNET = 0; private static final int FIRST_LOAD_TIMELINE_FROM_DB = 1; private static final int REFRESH_LISTVIEW = 2; private static final int LOAD_OLD_MESSAGE = 3; private static final int NETWORK_ERROR = 4; private static final int REFRESH_MSG = 5; private List<String> groupNames; private int groupIndex = 0; private View view; private AccountBean accountBean; private UserBean userBean; private String token; private MyHandler handler; private SoundPool soundPool; private GroupListBean groupListBean; private MessageListBean list; private List<MessageBean> msgBean; private TimeLineAdapter adapter; public static TimeLineFragment newInstance(AccountBean accountBean, UserBean userBean, String token) { TimeLineFragment fragment = new TimeLineFragment(); Bundle bundle = new Bundle(); bundle.putParcelable(ARGUMENTS_ACCOUNT_EXTRA, accountBean); bundle.putParcelable(ARGUMENTS_USER_EXTRA, userBean); bundle.putString(ARGUMENTS_TOKEN_EXTRA, token); fragment.setArguments(bundle); return fragment; } public TimeLineFragment() { super(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { userBean = getArguments().getParcelable(ARGUMENTS_USER_EXTRA); accountBean = getArguments().getParcelable(ARGUMENTS_ACCOUNT_EXTRA); token = getArguments().getString(ARGUMENTS_TOKEN_EXTRA); } setHasOptionsMenu(true); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment view = super.onCreateView(inflater, container, savedInstanceState); return view; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); list = new MessageListBean(); msgBean = new ArrayList<MessageBean>(); groupNames = new ArrayList<String>(); groupNames.add("全部"); groupNames.add("好友圈"); handler = new MyHandler(); soundPool = new SoundPool(10, AudioManager.STREAM_SYSTEM, 10); soundPool.load(getActivity(), R.raw.pop, 1); adapter = new TimeLineAdapter(TimeLineFragment.this, getListView(), msgBean); getListView().setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case AbsListView.OnScrollListener.SCROLL_STATE_IDLE: TimeLineBitmapDownloader.getInstance() .setPauseDownloadWork(false); TimeLineBitmapDownloader.getInstance().setPauseReadWork( false); break; case AbsListView.OnScrollListener.SCROLL_STATE_FLING: if (adapter != null) { adapter.setIsFling(true); } TimeLineBitmapDownloader.getInstance() .setPauseDownloadWork(true); TimeLineBitmapDownloader.getInstance().setPauseReadWork( true); break; case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: if (adapter != null) { adapter.setIsFling(true); } TimeLineBitmapDownloader.getInstance() .setPauseDownloadWork(true); TimeLineBitmapDownloader.getInstance().setPauseReadWork( true); break; } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } }); getStatusFromNetWorkOrDB(); asyncGetGroupInfo(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_main_group, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.group: showGroup(); return true; default: return super.onOptionsItemSelected(item); } } private void showGroup() { groupListBean = GroupDBTask.get(GlobalContext.getInstance().getCurrentAccountId()); if(groupListBean != null && groupListBean.getLists().size() > 0) { for (int i = 0; i < groupListBean.getLists().size(); i++) { groupNames.add(groupListBean.getLists().get(i).getName()); } } PopupMenu popupMenu = new PopupMenu(getActivity(), getActivity().findViewById(R.id.group)); popupMenu.inflate(R.menu.menu_group_item); Menu menu = popupMenu.getMenu(); int i = 0; if(groupListBean != null && groupListBean.getLists().size() > 0) { for (GroupBean bean : groupListBean.getLists()) { menu.add(Menu.NONE, Menu.FIRST + i, i, bean.getName()); i++; } } popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (item.getItemId() == R.id.all) { if (groupIndex != 0) { FriendsTimeLineDBTask.asyncUpdateRecentGroupId(GlobalContext.getInstance().getCurrentAccountId(), "0"); getStatusFromNetWorkOrDB(); ((MainActivity) getActivity()).getSupportActionBar().setTitle(GlobalContext.getInstance().getCurrentAccountName()); } groupIndex = 0; } else if (item.getItemId() == R.id.friend) { FriendsTimeLineDBTask.asyncUpdateRecentGroupId(GlobalContext.getInstance().getCurrentAccountId(), "1"); getFriendsTimeline(); ((MainActivity) getActivity()).getSupportActionBar().setTitle("好友圈"); groupIndex = 1; } else { for (int i = 0; i < groupNames.size(); i++) { if (item.getItemId() == (Menu.FIRST + i)) { FriendsTimeLineDBTask.asyncUpdateRecentGroupId(GlobalContext.getInstance().getCurrentAccountId(), groupListBean.getLists().get(i).getIdstr()); ((MainActivity) getActivity()).getSupportActionBar().setTitle(groupListBean.getLists().get(i).getName()); getOtherTimeline(groupListBean.getLists().get(i).getIdstr()); groupIndex = 2 + i; return true; } } } return true; } }); popupMenu.show(); } private void getOtherTimeline(String groupId) { listView.setVisibility(View.GONE); getRefreshLayout().setProgressViewOffset(false, 0, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics())); getRefreshLayout().setRefreshing(true); MessageListBean totalmsg = HomeOtherGroupTimeLineDBTask.get(accountBean.getUid(), groupId, 100); if(totalmsg.getSize() == 0){ getOtherTimelineFromInternet(groupId); }else{ readOtherTimelineFromDB(groupId); } } private void getOtherTimelineFromInternet(final String groupId) { new Thread() { public void run() { FriendGroupTimeLineDao dao = new FriendGroupTimeLineDao(accountBean.getAccess_token(), groupId); try { MessageListBean newlist = dao.getGSONMsgList(); AppLogger.e(newlist.toString()); HomeOtherGroupTimeLineDBTask.replace(newlist, accountBean.getInfo().getId(), groupId); Message msg = Message.obtain(); msg.what = FIRST_LOAD_TIMELINE_FROM_INTERNET; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } }.start(); } private void readOtherTimelineFromDB(final String groupId) { new Thread() { public void run() { MessageListBean totalmsg = HomeOtherGroupTimeLineDBTask.get(accountBean.getUid(), groupId, 100); Message msg = Message.obtain(); msg.what = FIRST_LOAD_TIMELINE_FROM_DB; msg.obj = totalmsg; handler.sendMessage(msg); } }.start(); } private void getFriendsTimeline() { listView.setVisibility(View.GONE); getRefreshLayout().setProgressViewOffset(false, 0, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics())); getRefreshLayout().setRefreshing(true); MessageListBean totalmsg = HomeOtherGroupTimeLineDBTask.get(accountBean.getUid(), "1", 100); if(totalmsg.getSize() == 0){ getFriendsTimelineFromInternet(); }else{ readFriendsTimelineFromDB(); } } private void readFriendsTimelineFromDB() { new Thread() { public void run() { MessageListBean totalmsg = HomeOtherGroupTimeLineDBTask .get(accountBean.getUid(), "1", 100); Message msg = Message.obtain(); msg.what = FIRST_LOAD_TIMELINE_FROM_DB; msg.obj = totalmsg; handler.sendMessage(msg); } }.start(); } private void getFriendsTimelineFromInternet() { new Thread() { public void run() { BilateralTimeLineDao dao = new BilateralTimeLineDao(accountBean.getAccess_token()); try { MessageListBean newlist = dao.getGSONMsgList(); AppLogger.e(newlist.toString()); HomeOtherGroupTimeLineDBTask.replace(newlist, accountBean.getInfo().getId(), "1"); Message msg = Message.obtain(); msg.what = FIRST_LOAD_TIMELINE_FROM_INTERNET; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } }.start(); } private void getStatusFromNetWorkOrDB() { int total = FriendsTimeLineDBTask.getTotalHomeMsgCount(accountBean.getUid()); getRefreshLayout().setProgressViewOffset(false, 0, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics())); getRefreshLayout().setRefreshing(true); if (SettingUtility.firstStart() || total == 0) { getListView().setVisibility(View.INVISIBLE); getNewStatusTask(); } else { getListView().setVisibility(View.INVISIBLE); readStatusFromDBTask(); } } private void getNewStatusTask() { new Thread() { public void run() { MainFriendsTimeLineDao dao = new MainFriendsTimeLineDao( accountBean.getAccess_token(), "100"); try { MessageListBean newlist = dao.getGSONMsgList(); FriendsTimeLineDBTask.asyncReplace(newlist, accountBean .getInfo().getId(), "0"); Message msg = Message.obtain(); msg.what = FIRST_LOAD_TIMELINE_FROM_INTERNET; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } ; }.start(); } private void readStatusFromDBTask() { new Thread() { public void run() { int total = FriendsTimeLineDBTask .getTotalHomeMsgCount(accountBean.getUid()); System.out.println("" + total); MessageListBean newlist = FriendsTimeLineDBTask .getHomeLineMsgList(accountBean.getInfo().getId(), total); Message msg = Message.obtain(); msg.what = FIRST_LOAD_TIMELINE_FROM_DB; msg.obj = newlist; handler.sendMessage(msg); } ; }.start(); } private class MyHandler extends Handler { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case FIRST_LOAD_TIMELINE_FROM_INTERNET: list = (MessageListBean) msg.obj; msgBean.clear(); msgBean.addAll(list.getItemList()); int firstLoadNumberFromInternet = list.getSize(); if (SettingUtility.isInvertRead()) { getListView().setSelection(firstLoadNumberFromInternet); } if (list.getSize() > 0 && SettingUtility.getEnableSound()) { soundPool.play(1, 1, 1, 0, 0, 1); } adapter = new TimeLineAdapter(TimeLineFragment.this, getListView(), msgBean); if(msgBean.size() == 0){ getListView().getFooterView().hide(); }else{ getListView().getFooterView().show(); } getListView().setVisibility(View.VISIBLE); getListView().setAdapter(adapter); getRefreshLayout().setRefreshing(false); break; case FIRST_LOAD_TIMELINE_FROM_DB: list = (MessageListBean) msg.obj; msgBean.clear(); msgBean.addAll(list.getItemList()); adapter = new TimeLineAdapter(TimeLineFragment.this, getListView(), msgBean); if(msgBean.size() == 0){ getListView().getFooterView().hide(); }else{ getListView().getFooterView().show(); } getListView().setVisibility(View.VISIBLE); getListView().setAdapter(adapter); if (SettingUtility.getEnableAutoRefresh()) { onRefresh(); } else { refreshLayout.setRefreshing(false); } break; case REFRESH_LISTVIEW: MessageListBean newList = (MessageListBean) msg.obj; list.addNewData(newList); listView.setVisibility(View.VISIBLE); int number = newList.getItemList().size(); msgBean.addAll(0, newList.getItemList()); newList = null; adapter.notifyDataSetChanged(); if (SettingUtility.isInvertRead()) { getListView().setSelection(number); } if (number == 0) { Toast.makeText(GlobalContext.getInstance(), getString(R.string.no_new_message), Toast.LENGTH_SHORT).show(); } else { if (SettingUtility.getEnableSound()) { soundPool.play(1, 1, 1, 0, 0, 1); } Toast.makeText( GlobalContext.getInstance(), String.format( getString(R.string.new_messages_count), number), Toast.LENGTH_SHORT).show(); } getRefreshLayout().setRefreshing(false); break; case LOAD_OLD_MESSAGE: MessageListBean oldList = (MessageListBean) msg.obj; list.addOldData(oldList); msgBean.addAll(oldList.getItemList()); getListView().requestLayout(); adapter.notifyDataSetChanged(); int oldnumber = oldList.getItemList().size(); oldList = null; if (oldnumber > 0) { Toast.makeText( GlobalContext.getInstance(), String.format( getString(R.string.old_messages_count), oldnumber), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(GlobalContext.getInstance(), getString(R.string.older_message_empty), Toast.LENGTH_SHORT).show(); } if (oldnumber < 20) { getListView().setPullLoadEnable(false); getListView().getFooterView().hide(); } getListView().stopLoadMore(); break; case NETWORK_ERROR: String errorStr = (String) msg.obj; Toast.makeText(GlobalContext.getInstance(), errorStr, Toast.LENGTH_SHORT) .show(); getRefreshLayout().setRefreshing(false); getListView().stopLoadMore(); break; } } } @Override public void onRefresh() { super.onRefresh(); if(groupIndex == 0) { refreshMainTimeLine(); }else if(groupIndex == 1){ refreshFriendsTimeLine(); }else{ if(groupListBean != null && groupListBean.getLists().size() > 0){ refreshOtherTimeLine(groupListBean.getLists().get(groupIndex - 2).getIdstr()); } } } private void refreshOtherTimeLine(final String groupId) { new Thread() { public void run() { FriendGroupTimeLineDao dao = new FriendGroupTimeLineDao(accountBean.getAccess_token(), groupId); if (msgBean != null && msgBean.size() > 0) { String sinceId = msgBean.get(0).getId(); dao.setSince_id(sinceId); } try { MessageListBean newlist = dao.getGSONMsgList(); MessageListBean list = new MessageListBean(); if (newlist.getItemList().size() >= 100) { list.getItemList().addAll( newlist.getItemList().subList(0, 99)); } else { list.getItemList().addAll( newlist.getItemList().subList(0, newlist.getItemList().size())); int totalCount = 100 > adapter.getList().size() ? adapter.getList() .size() : 100; list.getItemList() .addAll(newlist.getItemList().size(), adapter.getList().subList( 0, totalCount - newlist.getItemList() .size())); } HomeOtherGroupTimeLineDBTask.replace(list, accountBean.getInfo().getId(), groupId); Message msg = Message.obtain(); msg.what = REFRESH_LISTVIEW; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } }.start(); } private void refreshFriendsTimeLine() { new Thread() { public void run() { BilateralTimeLineDao dao = new BilateralTimeLineDao(accountBean.getAccess_token()); if (msgBean != null && msgBean.size() > 0) { String sinceId = msgBean.get(0).getId(); dao.setSince_id(sinceId); } try { MessageListBean newlist = dao.getGSONMsgList(); MessageListBean list = new MessageListBean(); if (newlist.getItemList().size() >= 100) { list.getItemList().addAll( newlist.getItemList().subList(0, 99)); } else { list.getItemList().addAll( newlist.getItemList().subList(0, newlist.getItemList().size())); int totalCount = 100 > adapter.getList().size() ? adapter.getList() .size() : 100; list.getItemList() .addAll(newlist.getItemList().size(), adapter.getList().subList( 0, totalCount - newlist.getItemList() .size())); } HomeOtherGroupTimeLineDBTask.replace(list, accountBean.getInfo().getId(), "1"); Message msg = Message.obtain(); msg.what = REFRESH_LISTVIEW; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } }.start(); } private void refreshMainTimeLine() { new Thread() { public void run() { MainFriendsTimeLineDao dao = new MainFriendsTimeLineDao( accountBean.getAccess_token(), "100"); if (msgBean != null && msgBean.size() > 0) { String sinceId = msgBean.get(0).getId(); dao.setSince_id(sinceId); } try { MessageListBean newlist = dao.getGSONMsgList(); MessageListBean list = new MessageListBean(); if (newlist.getItemList().size() >= 100) { list.getItemList().addAll( newlist.getItemList().subList(0, 99)); } else { list.getItemList().addAll( newlist.getItemList().subList(0, newlist.getItemList().size())); int totalCount = 100 > adapter.getList().size() ? adapter.getList() .size() : 100; list.getItemList() .addAll(newlist.getItemList().size(), adapter.getList().subList( 0, totalCount - newlist.getItemList() .size())); } FriendsTimeLineDBTask.asyncReplace(list, accountBean .getInfo().getId(), "0"); Message msg = Message.obtain(); msg.what = REFRESH_LISTVIEW; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } ; }.start(); } @Override public void onLoadMore() { super.onLoadMore(); if (groupIndex == 0) { asyncLoadOldMessage(); }else if(groupIndex == 1){ asyncLoadOldFriendsTimeLine(); }else{ if(groupListBean != null && groupListBean.getLists().size() > 0){ asyncLoadOldOtherTimeLine(groupListBean.getLists().get(groupIndex - 2).getIdstr()); } } } private void asyncLoadOldOtherTimeLine(final String groupId) { new Thread() { public void run() { FriendGroupTimeLineDao dao = new FriendGroupTimeLineDao(accountBean.getAccess_token(), groupId); long maxId = 0; if (getList() != null) { maxId = getList().get(getList().size() - 1).getIdLong() - 1; dao.setMax_id(String.valueOf(maxId)); } try { MessageListBean newlist = dao.getGSONMsgList(); Message msg = Message.obtain(); msg.what = LOAD_OLD_MESSAGE; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } }.start(); } private void asyncLoadOldFriendsTimeLine() { new Thread() { public void run() { BilateralTimeLineDao dao = new BilateralTimeLineDao(accountBean.getAccess_token()); long maxId = 0; if (getList() != null) { maxId = getList().get(getList().size() - 1).getIdLong() - 1; dao.setMax_id(String.valueOf(maxId)); } try { MessageListBean newlist = dao.getGSONMsgList(); Message msg = Message.obtain(); msg.what = LOAD_OLD_MESSAGE; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } }.start(); } private void asyncLoadOldMessage() { new Thread() { public void run() { MainFriendsTimeLineDao dao = new MainFriendsTimeLineDao( accountBean.getAccess_token(), "20"); long maxId = 0; if (getList() != null) { maxId = getList().get(getList().size() - 1).getIdLong() - 1; dao.setMax_id(String.valueOf(maxId)); } try { MessageListBean newlist = dao.getGSONMsgList(); Message msg = Message.obtain(); msg.what = LOAD_OLD_MESSAGE; msg.obj = newlist; handler.sendMessage(msg); } catch (WeiboException e) { e.printStackTrace(); Message msg = Message.obtain(); msg.what = NETWORK_ERROR; msg.obj = e.getError(); handler.sendMessage(msg); } } ; }.start(); } private List<MessageBean> getList() { if (adapter != null && adapter.getList().size() > 0) { return adapter.getList(); } else { return null; } } @Override public void onResume() { super.onResume(); adapter.notifyDataSetChanged(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data == null) { return; } final MessageBean msg = (MessageBean) data.getParcelableExtra("msg"); if (msg != null) { for (int i = 0; i < getList().size(); i++) { if (msg.equals(getList().get(i))) { MessageBean ori = getList().get(i); if (ori.getComments_count() != msg.getComments_count() || ori.getReposts_count() != msg.getReposts_count()) { ori.setReposts_count(msg.getReposts_count()); ori.setComments_count(msg.getComments_count()); FriendsTimeLineDBTask .asyncUpdateCount(msg.getId(), msg.getComments_count(), msg.getReposts_count()); adapter.notifyDataSetChanged(); } break; } } } } public void showFab() { fab.showFloatingActionButton(); } public void hideFab() { fab.hideFloatingActionButton(); } private void asyncGetGroupInfo() { new Thread() { @Override public void run() { super.run(); FriendGroupDao dao = new FriendGroupDao(GlobalContext.getInstance().getSpecialToken()); try { GroupListBean list = dao.getGroup(); if(list != null) { GroupDBTask.update(list, GlobalContext.getInstance().getCurrentAccountId()); AppLogger.e(list.toString()); } } catch (WeiboException e) { e.printStackTrace(); } } }.start(); } }