package net.oschina.app.ui;
import greendroid.widget.MyQuickAction;
import greendroid.widget.QuickActionGrid;
import greendroid.widget.QuickActionWidget;
import greendroid.widget.QuickActionWidget.OnQuickActionClickListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.oschina.app.AppConfig;
import net.oschina.app.AppContext;
import net.oschina.app.AppException;
import net.oschina.app.R;
import net.oschina.app.adapter.ListViewActiveAdapter;
import net.oschina.app.adapter.ListViewBlogAdapter;
import net.oschina.app.adapter.ListViewMessageAdapter;
import net.oschina.app.adapter.ListViewNewsAdapter;
import net.oschina.app.adapter.ListViewQuestionAdapter;
import net.oschina.app.adapter.ListViewTweetAdapter;
import net.oschina.app.bean.Active;
import net.oschina.app.bean.ActiveList;
import net.oschina.app.bean.Blog;
import net.oschina.app.bean.BlogList;
import net.oschina.app.bean.MessageList;
import net.oschina.app.bean.Messages;
import net.oschina.app.bean.News;
import net.oschina.app.bean.NewsList;
import net.oschina.app.bean.Notice;
import net.oschina.app.bean.Post;
import net.oschina.app.bean.PostList;
import net.oschina.app.bean.Result;
import net.oschina.app.bean.Tweet;
import net.oschina.app.bean.TweetList;
import net.oschina.app.common.StringUtils;
import net.oschina.app.common.UIHelper;
import net.oschina.app.common.UpdateManager;
import net.oschina.app.widget.BadgeView;
import net.oschina.app.widget.NewDataToast;
import net.oschina.app.widget.PullToRefreshListView;
import net.oschina.app.widget.ScrollLayout;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.TextView;
/**
* 应用程序首页
*
* @author liux (http://my.oschina.net/liux)
* @version 1.0
* @created 2012-3-21
*/
@SuppressLint("HandlerLeak")
public class Main extends BaseActivity {
public static final int QUICKACTION_LOGIN_OR_LOGOUT = 0;
public static final int QUICKACTION_USERINFO = 1;
public static final int QUICKACTION_SOFTWARE = 2;
public static final int QUICKACTION_SEARCH = 3;
public static final int QUICKACTION_SETTING = 4;
public static final int QUICKACTION_EXIT = 5;
private ScrollLayout mScrollLayout;
private RadioButton[] mButtons;
private String[] mHeadTitles;
private int mViewCount;
private int mCurSel;
private ImageView mHeadLogo;
private TextView mHeadTitle;
private ProgressBar mHeadProgress;
private ImageButton mHead_search;
private ImageButton mHeadPub_post;
private ImageButton mHeadPub_tweet;
private int curNewsCatalog = NewsList.CATALOG_ALL;
private int curQuestionCatalog = PostList.CATALOG_ASK;
private int curTweetCatalog = TweetList.CATALOG_LASTEST;
private int curActiveCatalog = ActiveList.CATALOG_LASTEST;
private PullToRefreshListView newsListView;
private PullToRefreshListView lvBlog;
private PullToRefreshListView lvQuestion;
private PullToRefreshListView lvTweet;//热门动弹
private PullToRefreshListView lvActive;
private PullToRefreshListView lvMsg;
private ListViewNewsAdapter newsListViewAdapter;
private ListViewBlogAdapter lvBlogAdapter;
private ListViewQuestionAdapter lvQuestionAdapter;
private ListViewTweetAdapter lvTweetAdapter;
private ListViewActiveAdapter lvActiveAdapter;
private ListViewMessageAdapter lvMsgAdapter;
private List<News> newsListViewData = new ArrayList<News>();
private List<Blog> lvBlogData = new ArrayList<Blog>();
private List<Post> lvQuestionData = new ArrayList<Post>();
private List<Tweet> lvTweetData = new ArrayList<Tweet>();
private List<Active> lvActiveData = new ArrayList<Active>();
private List<Messages> lvMsgData = new ArrayList<Messages>();
private Handler newsListViewHandler;
private Handler lvBlogHandler;
private Handler lvQuestionHandler;
private Handler lvTweetHandler;
private Handler lvActiveHandler;
private Handler lvMsgHandler;
private int newsListViewSumData;
private int lvBlogSumData;
private int lvQuestionSumData;
private int lvTweetSumData;
private int lvActiveSumData;
private int lvMsgSumData;
private RadioButton fbNews;
private RadioButton fbQuestion;
private RadioButton fbTweet;
private RadioButton fbactive;
private ImageView fbSetting;
private Button framebtn_News_lastest;
private Button framebtn_News_blog;
private Button framebtn_News_recommend;
private Button framebtn_Question_ask;
private Button framebtn_Question_share;
private Button framebtn_Question_other;
private Button framebtn_Question_job;
private Button framebtn_Question_site;
private Button framebtn_Tweet_lastest;
private Button framebtn_Tweet_hot;
private Button framebtn_Tweet_my;
private Button framebtn_Active_lastest;
private Button framebtn_Active_atme;
private Button framebtn_Active_comment;
private Button framebtn_Active_myself;
private Button framebtn_Active_message;
private View newsListView_footer;
private View lvBlog_footer;
private View lvQuestion_footer;
private View lvTweet_footer;
private View lvActive_footer;
private View lvMsg_footer;
private TextView newsListView_foot_more;
private TextView lvBlog_foot_more;
private TextView lvQuestion_foot_more;
private TextView lvTweet_foot_more;
private TextView lvActive_foot_more;
private TextView lvMsg_foot_more;
private ProgressBar newsListView_foot_progress;
private ProgressBar lvBlog_foot_progress;
private ProgressBar lvQuestion_foot_progress;
private ProgressBar lvTweet_foot_progress;
private ProgressBar lvActive_foot_progress;
private ProgressBar lvMsg_foot_progress;
public static BadgeView bv_active;
public static BadgeView bv_message;
public static BadgeView bv_atme;
public static BadgeView bv_review;
private QuickActionWidget mGrid;// 快捷栏控件
private boolean isClearNotice = false;
private int curClearNoticeType = 0;
private TweetReceiver tweetReceiver;// 动弹发布接收器
private AppContext appContext;// 全局Context
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 注册广播接收器
tweetReceiver = new TweetReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("net.oschina.app.action.APP_TWEETPUB");
registerReceiver(tweetReceiver, filter);
appContext = (AppContext) getApplication();
// 网络连接判断
if (!appContext.isNetworkConnected())
UIHelper.ToastMessage(this, R.string.network_not_connected);
// 初始化登录
appContext.initLoginInfo();
this.initHeadView();
this.initFootBar();
this.initPageScroll();
this.initFrameButton();
this.initBadgeView();
this.initQuickActionGrid();
this.initListViewUI();// 初始化UI
// 检查新版本
if (appContext.isCheckUp()) {
UpdateManager.getUpdateManager().checkAppUpdate(this, false);
}
// 启动轮询通知信息
this.foreachUserNotice();
}
@Override
protected void onResume() {
super.onResume();
if (mViewCount == 0)
mViewCount = 4;
if (mCurSel == 0 && !fbNews.isChecked()) {
fbNews.setChecked(true);
fbQuestion.setChecked(false);
fbTweet.setChecked(false);
fbactive.setChecked(false);
}
// 读取左右滑动配置
mScrollLayout.setIsScroll(appContext.isScroll());
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(tweetReceiver);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent.getBooleanExtra("LOGIN", false)) {
// 加载动弹、动态及留言(当前动弹的catalog大于0表示用户的uid)
if (lvTweetData.isEmpty() && curTweetCatalog > 0 && mCurSel == 2) {
this.loadLvTweetData(curTweetCatalog, 0, lvTweetHandler,
UIHelper.LISTVIEW_ACTION_INIT);
} else if (mCurSel == 3) {
if (lvActiveData.isEmpty()) {
this.loadLvActiveData(curActiveCatalog, 0, lvActiveHandler,
UIHelper.LISTVIEW_ACTION_INIT);
}
if (lvMsgData.isEmpty()) {
this.loadLvMsgData(0, lvMsgHandler,
UIHelper.LISTVIEW_ACTION_INIT);
}
}
} else if (intent.getBooleanExtra("NOTICE", false)) {
// 查看最新信息
mScrollLayout.scrollToScreen(3);
}
}
public class TweetReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
int what = intent.getIntExtra("MSG_WHAT", 0);
if (what == 1) {
Result res = (Result) intent.getSerializableExtra("RESULT");
UIHelper.ToastMessage(context, res.getErrorMessage(), 1000);
if (res.OK()) {
// 发送通知广播
if (res.getNotice() != null) {
UIHelper.sendBroadCast(context, res.getNotice());
}
// 发完动弹后-刷新最新动弹、我的动弹&最新动态(当前界面必须是动弹|动态)
if (curTweetCatalog >= 0 && mCurSel == 2) {
loadLvTweetData(curTweetCatalog, 0, lvTweetHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
} else if (curActiveCatalog == ActiveList.CATALOG_LASTEST
&& mCurSel == 3) {
loadLvActiveData(curActiveCatalog, 0, lvActiveHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
}
}
} else {
final Tweet tweet = (Tweet) intent
.getSerializableExtra("TWEET");
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
Result res = (Result) msg.obj;
UIHelper.ToastMessage(context,
res.getErrorMessage(), 1000);
if (res.OK()) {
// 发送通知广播
if (res.getNotice() != null) {
UIHelper.sendBroadCast(context,
res.getNotice());
}
// 发完动弹后-刷新最新、我的动弹&最新动态
if (curTweetCatalog >= 0 && mCurSel == 2) {
loadLvTweetData(curTweetCatalog, 0,
lvTweetHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
} else if (curActiveCatalog == ActiveList.CATALOG_LASTEST
&& mCurSel == 3) {
loadLvActiveData(curActiveCatalog, 0,
lvActiveHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
}
if (TweetPub.mContext != null) {
// 清除动弹保存的临时编辑内容
appContext.removeProperty(
AppConfig.TEMP_TWEET,
AppConfig.TEMP_TWEET_IMAGE);
((Activity) TweetPub.mContext).finish();
}
}
} else {
((AppException) msg.obj).makeToast(context);
if (TweetPub.mContext != null
&& TweetPub.mMessage != null)
TweetPub.mMessage.setVisibility(View.GONE);
}
}
};
Thread thread = new Thread() {
public void run() {
Message msg = new Message();
try {
Result res = appContext.pubTweet(tweet);
msg.what = 1;
msg.obj = res;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
handler.sendMessage(msg);
}
};
if (TweetPub.mContext != null)
UIHelper.showResendTweetDialog(TweetPub.mContext, thread);
else
UIHelper.showResendTweetDialog(context, thread);
}
}
}
/**
* 初始化快捷栏
*/
private void initQuickActionGrid() {
mGrid = new QuickActionGrid(this);
mGrid.addQuickAction(new MyQuickAction(this, R.drawable.ic_menu_login,
R.string.main_menu_login));
mGrid.addQuickAction(new MyQuickAction(this, R.drawable.ic_menu_myinfo,
R.string.main_menu_myinfo));
mGrid.addQuickAction(new MyQuickAction(this,
R.drawable.ic_menu_software, R.string.main_menu_software));
mGrid.addQuickAction(new MyQuickAction(this, R.drawable.ic_menu_search,
R.string.main_menu_search));
mGrid.addQuickAction(new MyQuickAction(this,
R.drawable.ic_menu_setting, R.string.main_menu_setting));
mGrid.addQuickAction(new MyQuickAction(this, R.drawable.ic_menu_exit,
R.string.main_menu_exit));
mGrid.setOnQuickActionClickListener(mActionListener);
}
/**
* 快捷栏item点击事件
*/
private OnQuickActionClickListener mActionListener = new OnQuickActionClickListener() {
public void onQuickActionClicked(QuickActionWidget widget, int position) {
switch (position) {
case QUICKACTION_LOGIN_OR_LOGOUT:// 用户登录-注销
UIHelper.loginOrLogout(Main.this);
break;
case QUICKACTION_USERINFO:// 我的资料
UIHelper.showUserInfo(Main.this);
break;
case QUICKACTION_SOFTWARE:// 开源软件
UIHelper.showSoftware(Main.this);
break;
case QUICKACTION_SEARCH:// 搜索
UIHelper.showSearch(Main.this);
break;
case QUICKACTION_SETTING:// 设置
UIHelper.showSetting(Main.this);
break;
case QUICKACTION_EXIT:// 退出
UIHelper.Exit(Main.this);
break;
}
}
};
/**
* 初始化所有ListView
*/
private void initListViewUI() {
// 初始化listview控件
initNewsListViewUI();// 初始化新闻列表
initBlogListView();
initQuestionListView();
initTweetListView();
initActiveListView();
initMsgListView();
// 加载listview数据
getListViewData();
}
/**
* 初始化所有ListView数据
*/
private void getListViewData() {
// 初始化Handler
newsListViewHandler = this.getDealListDataHandler(newsListView,// ListView
newsListViewAdapter, // adp
newsListView_foot_more,// 底部按钮
newsListView_foot_progress, // 底部滚动条
AppContext.PAGE_SIZE// 分页条数
);
lvBlogHandler = this.getDealListDataHandler(lvBlog, lvBlogAdapter,
lvBlog_foot_more, lvBlog_foot_progress, AppContext.PAGE_SIZE);
lvQuestionHandler = this.getDealListDataHandler(lvQuestion,
lvQuestionAdapter, lvQuestion_foot_more,
lvQuestion_foot_progress, AppContext.PAGE_SIZE);
lvTweetHandler = this.getDealListDataHandler(lvTweet, lvTweetAdapter,
lvTweet_foot_more, lvTweet_foot_progress, AppContext.PAGE_SIZE);
lvActiveHandler = this.getDealListDataHandler(lvActive,
lvActiveAdapter, lvActive_foot_more, lvActive_foot_progress,
AppContext.PAGE_SIZE);
lvMsgHandler = this.getDealListDataHandler(lvMsg, lvMsgAdapter,
lvMsg_foot_more, lvMsg_foot_progress, AppContext.PAGE_SIZE);
// 加载资讯数据
if (newsListViewData.isEmpty()) {
// 加载咨询列表
getNewsListData(//
curNewsCatalog, // 当前咨询的类别
0, // 页码
newsListViewHandler,// handler
UIHelper.LISTVIEW_ACTION_INIT// 动作:初始化
);
}
}
/**
* 初始化新闻列表
*/
private void initNewsListViewUI() {
newsListViewAdapter = new ListViewNewsAdapter(this, newsListViewData,
R.layout.news_listitem);
newsListView_footer = getLayoutInflater().inflate(
R.layout.listview_footer, null);
newsListView_foot_more = (TextView) newsListView_footer
.findViewById(R.id.listview_foot_more);
newsListView_foot_progress = (ProgressBar) newsListView_footer
.findViewById(R.id.listview_foot_progress);
newsListView = (PullToRefreshListView) findViewById(R.id.frame_listview_news);
newsListView.addFooterView(newsListView_footer);// 添加底部视图 必须在setAdapter前
newsListView.setAdapter(newsListViewAdapter);
// 点击事件
newsListView
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 点击头部、底部栏无效
if (position == 0 || view == newsListView_footer)
return;
News news = null;
// 判断是否是TextView
if (view instanceof TextView) {
news = (News) view.getTag();
} else {
TextView tv = (TextView) view
.findViewById(R.id.news_listitem_title);
news = (News) tv.getTag();
}
if (news == null)
return;
// 跳转到新闻详情
UIHelper.showNewsRedirect(view.getContext(), news);
}
});
// 滚动ListView事件
newsListView.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
newsListView.onScrollStateChanged(view, scrollState);
// 数据为空--不用继续下面代码了
if (newsListViewData.isEmpty())
return;
// 判断是否滚动到底部
boolean scrollEnd = false;
try {
if (view.getPositionForView(newsListView_footer) == view
.getLastVisiblePosition())
scrollEnd = true;
} catch (Exception e) {
scrollEnd = false;
}
int lvDataState = StringUtils.toInt(newsListView.getTag());
if (scrollEnd && lvDataState == UIHelper.LISTVIEW_DATA_MORE) {
newsListView.setTag(UIHelper.LISTVIEW_DATA_LOADING);
newsListView_foot_more.setText(AppContext.PAGE_SIZE
+ "条数据 " + getString(R.string.load_ing));
newsListView_foot_progress.setVisibility(View.VISIBLE);
// 当前pageIndex
int pageIndex = newsListViewSumData / AppContext.PAGE_SIZE;
getNewsListData(curNewsCatalog, pageIndex,
newsListViewHandler,
UIHelper.LISTVIEW_ACTION_SCROLL);
}
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
newsListView.onScroll(view, firstVisibleItem, visibleItemCount,
totalItemCount);
}
});
// 刷新ListView操作
newsListView
.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
public void onRefresh() {
getNewsListData(curNewsCatalog, 0, newsListViewHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
}
});
}
/**
* 初始化博客列表
*/
private void initBlogListView() {
lvBlogAdapter = new ListViewBlogAdapter(this, BlogList.CATALOG_LATEST,
lvBlogData, R.layout.blog_listitem);
lvBlog_footer = getLayoutInflater().inflate(R.layout.listview_footer,
null);
lvBlog_foot_more = (TextView) lvBlog_footer
.findViewById(R.id.listview_foot_more);
lvBlog_foot_progress = (ProgressBar) lvBlog_footer
.findViewById(R.id.listview_foot_progress);
lvBlog = (PullToRefreshListView) findViewById(R.id.frame_listview_blog);
lvBlog.addFooterView(lvBlog_footer);// 添加底部视图 必须在setAdapter前
lvBlog.setAdapter(lvBlogAdapter);
lvBlog.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 点击头部、底部栏无效
if (position == 0 || view == lvBlog_footer)
return;
Blog blog = null;
// 判断是否是TextView
if (view instanceof TextView) {
blog = (Blog) view.getTag();
} else {
TextView tv = (TextView) view
.findViewById(R.id.blog_listitem_title);
blog = (Blog) tv.getTag();
}
if (blog == null)
return;
// 跳转到博客详情
UIHelper.showUrlRedirect(view.getContext(), blog.getUrl());
}
});
lvBlog.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
lvBlog.onScrollStateChanged(view, scrollState);
// 数据为空--不用继续下面代码了
if (lvBlogData.isEmpty())
return;
// 判断是否滚动到底部
boolean scrollEnd = false;
try {
if (view.getPositionForView(lvBlog_footer) == view
.getLastVisiblePosition())
scrollEnd = true;
} catch (Exception e) {
scrollEnd = false;
}
int lvDataState = StringUtils.toInt(lvBlog.getTag());
if (scrollEnd && lvDataState == UIHelper.LISTVIEW_DATA_MORE) {
lvBlog.setTag(UIHelper.LISTVIEW_DATA_LOADING);
lvBlog_foot_more.setText(R.string.load_ing);
lvBlog_foot_progress.setVisibility(View.VISIBLE);
// 当前pageIndex
int pageIndex = lvBlogSumData / AppContext.PAGE_SIZE;
loadLvBlogData(curNewsCatalog, pageIndex, lvBlogHandler,
UIHelper.LISTVIEW_ACTION_SCROLL);
}
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
lvBlog.onScroll(view, firstVisibleItem, visibleItemCount,
totalItemCount);
}
});
lvBlog.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
public void onRefresh() {
loadLvBlogData(curNewsCatalog, 0, lvBlogHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
}
});
}
/**
* 初始化帖子列表
*/
private void initQuestionListView() {
lvQuestionAdapter = new ListViewQuestionAdapter(this, lvQuestionData,
R.layout.question_listitem);
lvQuestion_footer = getLayoutInflater().inflate(
R.layout.listview_footer, null);
lvQuestion_foot_more = (TextView) lvQuestion_footer
.findViewById(R.id.listview_foot_more);
lvQuestion_foot_progress = (ProgressBar) lvQuestion_footer
.findViewById(R.id.listview_foot_progress);
lvQuestion = (PullToRefreshListView) findViewById(R.id.frame_listview_question);
lvQuestion.addFooterView(lvQuestion_footer);// 添加底部视图 必须在setAdapter前
lvQuestion.setAdapter(lvQuestionAdapter);
lvQuestion
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 点击头部、底部栏无效
if (position == 0 || view == lvQuestion_footer)
return;
Post post = null;
// 判断是否是TextView
if (view instanceof TextView) {
post = (Post) view.getTag();
} else {
TextView tv = (TextView) view
.findViewById(R.id.question_listitem_title);
post = (Post) tv.getTag();
}
if (post == null)
return;
// 跳转到问答详情
UIHelper.showQuestionDetail(view.getContext(),
post.getId());
}
});
lvQuestion.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
lvQuestion.onScrollStateChanged(view, scrollState);
// 数据为空--不用继续下面代码了
if (lvQuestionData.isEmpty())
return;
// 判断是否滚动到底部
boolean scrollEnd = false;
try {
if (view.getPositionForView(lvQuestion_footer) == view
.getLastVisiblePosition())
scrollEnd = true;
} catch (Exception e) {
scrollEnd = false;
}
int lvDataState = StringUtils.toInt(lvQuestion.getTag());
if (scrollEnd && lvDataState == UIHelper.LISTVIEW_DATA_MORE) {
lvQuestion.setTag(UIHelper.LISTVIEW_DATA_LOADING);
lvQuestion_foot_more.setText(R.string.load_ing);
lvQuestion_foot_progress.setVisibility(View.VISIBLE);
// 当前pageIndex
int pageIndex = lvQuestionSumData / AppContext.PAGE_SIZE;
loadLvQuestionData(curQuestionCatalog, pageIndex,
lvQuestionHandler, UIHelper.LISTVIEW_ACTION_SCROLL);
}
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
lvQuestion.onScroll(view, firstVisibleItem, visibleItemCount,
totalItemCount);
}
});
lvQuestion
.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
public void onRefresh() {
loadLvQuestionData(curQuestionCatalog, 0,
lvQuestionHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
}
});
}
/**
* 初始化动弹列表
*/
private void initTweetListView() {
lvTweetAdapter = new ListViewTweetAdapter(this, lvTweetData,
R.layout.tweet_listitem);
lvTweet_footer = getLayoutInflater().inflate(R.layout.listview_footer,
null);
lvTweet_foot_more = (TextView) lvTweet_footer
.findViewById(R.id.listview_foot_more);
lvTweet_foot_progress = (ProgressBar) lvTweet_footer
.findViewById(R.id.listview_foot_progress);
lvTweet = (PullToRefreshListView) findViewById(R.id.frame_listview_tweet);
lvTweet.addFooterView(lvTweet_footer);// 添加底部视图 必须在setAdapter前
lvTweet.setAdapter(lvTweetAdapter);
lvTweet.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 点击头部、底部栏无效
if (position == 0 || view == lvTweet_footer)
return;
Tweet tweet = null;
// 判断是否是TextView
if (view instanceof TextView) {
tweet = (Tweet) view.getTag();
} else {
TextView tv = (TextView) view
.findViewById(R.id.tweet_listitem_username);
tweet = (Tweet) tv.getTag();
}
if (tweet == null)
return;
// 跳转到动弹详情&评论页面
UIHelper.showTweetDetail(view.getContext(), tweet.getId());
}
});
lvTweet.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
lvTweet.onScrollStateChanged(view, scrollState);
// 数据为空--不用继续下面代码了
if (lvTweetData.isEmpty())
return;
// 判断是否滚动到底部
boolean scrollEnd = false;
try {
if (view.getPositionForView(lvTweet_footer) == view
.getLastVisiblePosition())
scrollEnd = true;
} catch (Exception e) {
scrollEnd = false;
}
int lvDataState = StringUtils.toInt(lvTweet.getTag());
if (scrollEnd && lvDataState == UIHelper.LISTVIEW_DATA_MORE) {
lvTweet.setTag(UIHelper.LISTVIEW_DATA_LOADING);
lvTweet_foot_more.setText(R.string.load_ing);
lvTweet_foot_progress.setVisibility(View.VISIBLE);
// 当前pageIndex
int pageIndex = lvTweetSumData / AppContext.PAGE_SIZE;
loadLvTweetData(curTweetCatalog, pageIndex, lvTweetHandler,
UIHelper.LISTVIEW_ACTION_SCROLL);
}
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
lvTweet.onScroll(view, firstVisibleItem, visibleItemCount,
totalItemCount);
}
});
lvTweet.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// 点击头部、底部栏无效
if (position == 0 || view == lvTweet_footer)
return false;
Tweet _tweet = null;
// 判断是否是TextView
if (view instanceof TextView) {
_tweet = (Tweet) view.getTag();
} else {
TextView tv = (TextView) view
.findViewById(R.id.tweet_listitem_username);
_tweet = (Tweet) tv.getTag();
}
if (_tweet == null)
return false;
final Tweet tweet = _tweet;
// 删除操作
// if(appContext.getLoginUid() == tweet.getAuthorId()) {
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
Result res = (Result) msg.obj;
if (res.OK()) {
lvTweetData.remove(tweet);
lvTweetAdapter.notifyDataSetChanged();
}
UIHelper.ToastMessage(Main.this,
res.getErrorMessage());
} else {
((AppException) msg.obj).makeToast(Main.this);
}
}
};
Thread thread = new Thread() {
public void run() {
Message msg = new Message();
try {
Result res = appContext.delTweet(
appContext.getLoginUid(), tweet.getId());
msg.what = 1;
msg.obj = res;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
handler.sendMessage(msg);
}
};
UIHelper.showTweetOptionDialog(Main.this, thread);
// } else {
// UIHelper.showTweetOptionDialog(Main.this, null);
// }
return true;
}
});
lvTweet.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
public void onRefresh() {
loadLvTweetData(curTweetCatalog, 0, lvTweetHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
}
});
}
/**
* 初始化动态列表
*/
private void initActiveListView() {
lvActiveAdapter = new ListViewActiveAdapter(this, lvActiveData,
R.layout.active_listitem);
lvActive_footer = getLayoutInflater().inflate(R.layout.listview_footer,
null);
lvActive_foot_more = (TextView) lvActive_footer
.findViewById(R.id.listview_foot_more);
lvActive_foot_progress = (ProgressBar) lvActive_footer
.findViewById(R.id.listview_foot_progress);
lvActive = (PullToRefreshListView) findViewById(R.id.frame_listview_active);
lvActive.addFooterView(lvActive_footer);// 添加底部视图 必须在setAdapter前
lvActive.setAdapter(lvActiveAdapter);
lvActive.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 点击头部、底部栏无效
if (position == 0 || view == lvActive_footer)
return;
Active active = null;
// 判断是否是TextView
if (view instanceof TextView) {
active = (Active) view.getTag();
} else {
TextView tv = (TextView) view
.findViewById(R.id.active_listitem_username);
active = (Active) tv.getTag();
}
if (active == null)
return;
// 跳转
UIHelper.showActiveRedirect(view.getContext(), active);
}
});
lvActive.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
lvActive.onScrollStateChanged(view, scrollState);
// 数据为空--不用继续下面代码了
if (lvActiveData.isEmpty())
return;
// 判断是否滚动到底部
boolean scrollEnd = false;
try {
if (view.getPositionForView(lvActive_footer) == view
.getLastVisiblePosition())
scrollEnd = true;
} catch (Exception e) {
scrollEnd = false;
}
int lvDataState = StringUtils.toInt(lvActive.getTag());
if (scrollEnd && lvDataState == UIHelper.LISTVIEW_DATA_MORE) {
lvActive.setTag(UIHelper.LISTVIEW_DATA_LOADING);
lvActive_foot_more.setText(R.string.load_ing);
lvActive_foot_progress.setVisibility(View.VISIBLE);
// 当前pageIndex
int pageIndex = lvActiveSumData / AppContext.PAGE_SIZE;
loadLvActiveData(curActiveCatalog, pageIndex,
lvActiveHandler, UIHelper.LISTVIEW_ACTION_SCROLL);
}
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
lvActive.onScroll(view, firstVisibleItem, visibleItemCount,
totalItemCount);
}
});
lvActive.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
public void onRefresh() {
// 处理通知信息
if (curActiveCatalog == ActiveList.CATALOG_ATME
&& bv_atme.isShown()) {
isClearNotice = true;
curClearNoticeType = Notice.TYPE_ATME;
} else if (curActiveCatalog == ActiveList.CATALOG_COMMENT
&& bv_review.isShown()) {
isClearNotice = true;
curClearNoticeType = Notice.TYPE_COMMENT;
}
// 刷新数据
loadLvActiveData(curActiveCatalog, 0, lvActiveHandler,
UIHelper.LISTVIEW_ACTION_REFRESH);
}
});
}
/**
* 初始化留言列表
*/
private void initMsgListView() {
lvMsgAdapter = new ListViewMessageAdapter(this, lvMsgData,
R.layout.message_listitem);
lvMsg_footer = getLayoutInflater().inflate(R.layout.listview_footer,
null);
lvMsg_foot_more = (TextView) lvMsg_footer
.findViewById(R.id.listview_foot_more);
lvMsg_foot_progress = (ProgressBar) lvMsg_footer
.findViewById(R.id.listview_foot_progress);
lvMsg = (PullToRefreshListView) findViewById(R.id.frame_listview_message);
lvMsg.addFooterView(lvMsg_footer);// 添加底部视图 必须在setAdapter前
lvMsg.setAdapter(lvMsgAdapter);
lvMsg.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 点击头部、底部栏无效
if (position == 0 || view == lvMsg_footer)
return;
Messages msg = null;
// 判断是否是TextView
if (view instanceof TextView) {
msg = (Messages) view.getTag();
} else {
TextView tv = (TextView) view
.findViewById(R.id.message_listitem_username);
msg = (Messages) tv.getTag();
}
if (msg == null)
return;
// 跳转到留言详情
UIHelper.showMessageDetail(view.getContext(),
msg.getFriendId(), msg.getFriendName());
}
});
lvMsg.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
lvMsg.onScrollStateChanged(view, scrollState);
// 数据为空--不用继续下面代码了
if (lvMsgData.isEmpty())
return;
// 判断是否滚动到底部
boolean scrollEnd = false;
try {
if (view.getPositionForView(lvMsg_footer) == view
.getLastVisiblePosition())
scrollEnd = true;
} catch (Exception e) {
scrollEnd = false;
}
int lvDataState = StringUtils.toInt(lvMsg.getTag());
if (scrollEnd && lvDataState == UIHelper.LISTVIEW_DATA_MORE) {
lvMsg.setTag(UIHelper.LISTVIEW_DATA_LOADING);
lvMsg_foot_more.setText(R.string.load_ing);
lvMsg_foot_progress.setVisibility(View.VISIBLE);
// 当前pageIndex
int pageIndex = lvMsgSumData / AppContext.PAGE_SIZE;
loadLvMsgData(pageIndex, lvMsgHandler,
UIHelper.LISTVIEW_ACTION_SCROLL);
}
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
lvMsg.onScroll(view, firstVisibleItem, visibleItemCount,
totalItemCount);
}
});
lvMsg.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
// 点击头部、底部栏无效
if (position == 0 || view == lvMsg_footer)
return false;
Messages _msg = null;
// 判断是否是TextView
if (view instanceof TextView) {
_msg = (Messages) view.getTag();
} else {
TextView tv = (TextView) view
.findViewById(R.id.message_listitem_username);
_msg = (Messages) tv.getTag();
}
if (_msg == null)
return false;
final Messages message = _msg;
// 选择操作
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
Result res = (Result) msg.obj;
if (res.OK()) {
lvMsgData.remove(message);
lvMsgAdapter.notifyDataSetChanged();
}
UIHelper.ToastMessage(Main.this,
res.getErrorMessage());
} else {
((AppException) msg.obj).makeToast(Main.this);
}
}
};
Thread thread = new Thread() {
public void run() {
Message msg = new Message();
try {
Result res = appContext.delMessage(
appContext.getLoginUid(),
message.getFriendId());
msg.what = 1;
msg.obj = res;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
handler.sendMessage(msg);
}
};
UIHelper.showMessageListOptionDialog(Main.this, message, thread);
return true;
}
});
lvMsg.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
public void onRefresh() {
// 清除通知信息
if (bv_message.isShown()) {
isClearNotice = true;
curClearNoticeType = Notice.TYPE_MESSAGE;
}
// 刷新数据
loadLvMsgData(0, lvMsgHandler, UIHelper.LISTVIEW_ACTION_REFRESH);
}
});
}
/**
* 初始化头部视图
*/
private void initHeadView() {
mHeadLogo = (ImageView) findViewById(R.id.main_head_logo);
mHeadTitle = (TextView) findViewById(R.id.main_head_title);
mHeadProgress = (ProgressBar) findViewById(R.id.main_head_progress);
mHead_search = (ImageButton) findViewById(R.id.main_head_search);
mHeadPub_post = (ImageButton) findViewById(R.id.main_head_pub_post);
mHeadPub_tweet = (ImageButton) findViewById(R.id.main_head_pub_tweet);
mHead_search.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
UIHelper.showSearch(v.getContext());
}
});
mHeadPub_post.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
UIHelper.showQuestionPub(v.getContext());
}
});
mHeadPub_tweet.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
UIHelper.showTweetPub(Main.this);
}
});
}
/**
* 初始化底部栏
*/
private void initFootBar() {
fbNews = (RadioButton) findViewById(R.id.main_footbar_news);
fbQuestion = (RadioButton) findViewById(R.id.main_footbar_question);
fbTweet = (RadioButton) findViewById(R.id.main_footbar_tweet);
fbactive = (RadioButton) findViewById(R.id.main_footbar_active);
fbSetting = (ImageView) findViewById(R.id.main_footbar_setting);
fbSetting.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// 展示快捷栏&判断是否登录&是否加载文章图片
UIHelper.showSettingLoginOrLogout(Main.this,
mGrid.getQuickAction(0));
mGrid.show(v);
}
});
}
/**
* 初始化通知信息标签控件
*/
private void initBadgeView() {
bv_active = new BadgeView(this, fbactive);
bv_active.setBackgroundResource(R.drawable.widget_count_bg);
bv_active.setIncludeFontPadding(false);
bv_active.setGravity(Gravity.CENTER);
bv_active.setTextSize(8f);
bv_active.setTextColor(Color.WHITE);
bv_atme = new BadgeView(this, framebtn_Active_atme);
bv_atme.setBackgroundResource(R.drawable.widget_count_bg);
bv_atme.setIncludeFontPadding(false);
bv_atme.setGravity(Gravity.CENTER);
bv_atme.setTextSize(8f);
bv_atme.setTextColor(Color.WHITE);
bv_review = new BadgeView(this, framebtn_Active_comment);
bv_review.setBackgroundResource(R.drawable.widget_count_bg);
bv_review.setIncludeFontPadding(false);
bv_review.setGravity(Gravity.CENTER);
bv_review.setTextSize(8f);
bv_review.setTextColor(Color.WHITE);
bv_message = new BadgeView(this, framebtn_Active_message);
bv_message.setBackgroundResource(R.drawable.widget_count_bg);
bv_message.setIncludeFontPadding(false);
bv_message.setGravity(Gravity.CENTER);
bv_message.setTextSize(8f);
bv_message.setTextColor(Color.WHITE);
}
/**
* 初始化水平滚动翻页
*/
private void initPageScroll() {
mScrollLayout = (ScrollLayout) findViewById(R.id.main_scrolllayout);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.main_linearlayout_footer);
mHeadTitles = getResources().getStringArray(R.array.head_titles);
mViewCount = mScrollLayout.getChildCount();
mButtons = new RadioButton[mViewCount];
for (int i = 0; i < mViewCount; i++) {
mButtons[i] = (RadioButton) linearLayout.getChildAt(i * 2);
mButtons[i].setTag(i);
mButtons[i].setChecked(false);
mButtons[i].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int pos = (Integer) (v.getTag());
// 点击当前项刷新
if (mCurSel == pos) {
switch (pos) {
case 0:// 资讯+博客
if (newsListView.getVisibility() == View.VISIBLE)
newsListView.clickRefresh();
else
lvBlog.clickRefresh();
break;
case 1:// 问答
lvQuestion.clickRefresh();
break;
case 2:// 动弹
lvTweet.clickRefresh();
break;
case 3:// 动态+留言
if (lvActive.getVisibility() == View.VISIBLE)
lvActive.clickRefresh();
else
lvMsg.clickRefresh();
break;
}
}
mScrollLayout.snapToScreen(pos);
}
});
}
// 设置第一显示屏
mCurSel = 0;
mButtons[mCurSel].setChecked(true);
mScrollLayout
.SetOnViewChangeListener(new ScrollLayout.OnViewChangeListener() {
public void OnViewChange(int viewIndex) {
// 切换列表视图-如果列表数据为空:加载数据
switch (viewIndex) {
case 0:// 资讯
if (newsListView.getVisibility() == View.VISIBLE) {
if (newsListViewData.isEmpty()) {
getNewsListData(curNewsCatalog, 0,
newsListViewHandler,
UIHelper.LISTVIEW_ACTION_INIT);
}
} else {
if (lvBlogData.isEmpty()) {
loadLvBlogData(curNewsCatalog, 0,
lvBlogHandler,
UIHelper.LISTVIEW_ACTION_INIT);
}
}
break;
case 1:// 问答
if (lvQuestionData.isEmpty()) {
loadLvQuestionData(curQuestionCatalog, 0,
lvQuestionHandler,
UIHelper.LISTVIEW_ACTION_INIT);
}
break;
case 2:// 动弹
if (lvTweetData.isEmpty()) {
loadLvTweetData(curTweetCatalog, 0,
lvTweetHandler,
UIHelper.LISTVIEW_ACTION_INIT);
}
break;
case 3:// 动态
// 判断登录
if (!appContext.isLogin()) {
if (lvActive.getVisibility() == View.VISIBLE
&& lvActiveData.isEmpty()) {
lvActive_foot_more
.setText(R.string.load_empty);
lvActive_foot_progress
.setVisibility(View.GONE);
} else if (lvMsg.getVisibility() == View.VISIBLE
&& lvMsgData.isEmpty()) {
lvMsg_foot_more
.setText(R.string.load_empty);
lvMsg_foot_progress
.setVisibility(View.GONE);
}
UIHelper.showLoginDialog(Main.this);
break;
}
// 处理通知信息
if (bv_atme.isShown())
frameActiveBtnOnClick(framebtn_Active_atme,
ActiveList.CATALOG_ATME,
UIHelper.LISTVIEW_ACTION_REFRESH);
else if (bv_review.isShown())
frameActiveBtnOnClick(framebtn_Active_comment,
ActiveList.CATALOG_COMMENT,
UIHelper.LISTVIEW_ACTION_REFRESH);
else if (bv_message.isShown())
frameActiveBtnOnClick(framebtn_Active_message,
0, UIHelper.LISTVIEW_ACTION_REFRESH);
else if (lvActive.getVisibility() == View.VISIBLE
&& lvActiveData.isEmpty())
loadLvActiveData(curActiveCatalog, 0,
lvActiveHandler,
UIHelper.LISTVIEW_ACTION_INIT);
else if (lvMsg.getVisibility() == View.VISIBLE
&& lvMsgData.isEmpty())
loadLvMsgData(0, lvMsgHandler,
UIHelper.LISTVIEW_ACTION_INIT);
break;
}
setCurPoint(viewIndex);
}
});
}
/**
* 设置底部栏当前焦点
*
* @param index
*/
private void setCurPoint(int index) {
if (index < 0 || index > mViewCount - 1 || mCurSel == index)
return;
mButtons[mCurSel].setChecked(false);
mButtons[index].setChecked(true);
mHeadTitle.setText(mHeadTitles[index]);
mCurSel = index;
mHead_search.setVisibility(View.GONE);
mHeadPub_post.setVisibility(View.GONE);
mHeadPub_tweet.setVisibility(View.GONE);
// 头部logo、发帖、发动弹按钮显示
if (index == 0) {
mHeadLogo.setImageResource(R.drawable.frame_logo_news);
mHead_search.setVisibility(View.VISIBLE);
} else if (index == 1) {
mHeadLogo.setImageResource(R.drawable.frame_logo_post);
mHeadPub_post.setVisibility(View.VISIBLE);
} else if (index == 2) {
mHeadLogo.setImageResource(R.drawable.frame_logo_tweet);
mHeadPub_tweet.setVisibility(View.VISIBLE);
} else if (index == 3) {
mHeadLogo.setImageResource(R.drawable.frame_logo_active);
mHeadPub_tweet.setVisibility(View.VISIBLE);
}
}
/**
* 初始化各个主页的按钮(资讯、问答、动弹、动态、留言)
*/
private void initFrameButton() {
// 初始化按钮控件
framebtn_News_lastest = (Button) findViewById(R.id.frame_btn_news_lastest);
framebtn_News_blog = (Button) findViewById(R.id.frame_btn_news_blog);
framebtn_News_recommend = (Button) findViewById(R.id.frame_btn_news_recommend);
framebtn_Question_ask = (Button) findViewById(R.id.frame_btn_question_ask);
framebtn_Question_share = (Button) findViewById(R.id.frame_btn_question_share);
framebtn_Question_other = (Button) findViewById(R.id.frame_btn_question_other);
framebtn_Question_job = (Button) findViewById(R.id.frame_btn_question_job);
framebtn_Question_site = (Button) findViewById(R.id.frame_btn_question_site);
framebtn_Tweet_lastest = (Button) findViewById(R.id.frame_btn_tweet_lastest);
framebtn_Tweet_hot = (Button) findViewById(R.id.frame_btn_tweet_hot);
framebtn_Tweet_my = (Button) findViewById(R.id.frame_btn_tweet_my);
framebtn_Active_lastest = (Button) findViewById(R.id.frame_btn_active_lastest);
framebtn_Active_atme = (Button) findViewById(R.id.frame_btn_active_atme);
framebtn_Active_comment = (Button) findViewById(R.id.frame_btn_active_comment);
framebtn_Active_myself = (Button) findViewById(R.id.frame_btn_active_myself);
framebtn_Active_message = (Button) findViewById(R.id.frame_btn_active_message);
// 设置首选择项
framebtn_News_lastest.setEnabled(false);
framebtn_Question_ask.setEnabled(false);
framebtn_Tweet_lastest.setEnabled(false);
framebtn_Active_lastest.setEnabled(false);
// 资讯+博客
framebtn_News_lastest.setOnClickListener(frameNewsBtnClick(
framebtn_News_lastest, NewsList.CATALOG_ALL));
framebtn_News_blog.setOnClickListener(frameNewsBtnClick(
framebtn_News_blog, BlogList.CATALOG_LATEST));
framebtn_News_recommend.setOnClickListener(frameNewsBtnClick(
framebtn_News_recommend, BlogList.CATALOG_RECOMMEND));
// 问答
framebtn_Question_ask.setOnClickListener(frameQuestionBtnClick(
framebtn_Question_ask, PostList.CATALOG_ASK));
framebtn_Question_share.setOnClickListener(frameQuestionBtnClick(
framebtn_Question_share, PostList.CATALOG_SHARE));
framebtn_Question_other.setOnClickListener(frameQuestionBtnClick(
framebtn_Question_other, PostList.CATALOG_OTHER));
framebtn_Question_job.setOnClickListener(frameQuestionBtnClick(
framebtn_Question_job, PostList.CATALOG_JOB));
framebtn_Question_site.setOnClickListener(frameQuestionBtnClick(
framebtn_Question_site, PostList.CATALOG_SITE));
// 动弹
framebtn_Tweet_lastest.setOnClickListener(frameTweetBtnClick(
framebtn_Tweet_lastest, TweetList.CATALOG_LASTEST));
framebtn_Tweet_hot.setOnClickListener(frameTweetBtnClick(
framebtn_Tweet_hot, TweetList.CATALOG_HOT));
framebtn_Tweet_my.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// 判断登录
int uid = appContext.getLoginUid();
if (uid == 0) {
UIHelper.showLoginDialog(Main.this);
return;
}
framebtn_Tweet_lastest.setEnabled(true);
framebtn_Tweet_hot.setEnabled(true);
framebtn_Tweet_my.setEnabled(false);
curTweetCatalog = uid;
loadLvTweetData(curTweetCatalog, 0, lvTweetHandler,
UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG);
}
});
// 动态+留言
framebtn_Active_lastest.setOnClickListener(frameActiveBtnClick(
framebtn_Active_lastest, ActiveList.CATALOG_LASTEST));
framebtn_Active_atme.setOnClickListener(frameActiveBtnClick(
framebtn_Active_atme, ActiveList.CATALOG_ATME));
framebtn_Active_comment.setOnClickListener(frameActiveBtnClick(
framebtn_Active_comment, ActiveList.CATALOG_COMMENT));
framebtn_Active_myself.setOnClickListener(frameActiveBtnClick(
framebtn_Active_myself, ActiveList.CATALOG_MYSELF));
framebtn_Active_message.setOnClickListener(frameActiveBtnClick(
framebtn_Active_message, 0));
// 特殊处理
framebtn_Active_atme.setText("@"
+ getString(R.string.frame_title_active_atme));
}
private View.OnClickListener frameNewsBtnClick(final Button btn,
final int catalog) {
return new View.OnClickListener() {
public void onClick(View v) {
if (btn == framebtn_News_lastest) {
framebtn_News_lastest.setEnabled(false);
} else {
framebtn_News_lastest.setEnabled(true);
}
if (btn == framebtn_News_blog) {
framebtn_News_blog.setEnabled(false);
} else {
framebtn_News_blog.setEnabled(true);
}
if (btn == framebtn_News_recommend) {
framebtn_News_recommend.setEnabled(false);
} else {
framebtn_News_recommend.setEnabled(true);
}
curNewsCatalog = catalog;
// 非新闻列表
if (btn == framebtn_News_lastest) {
newsListView.setVisibility(View.VISIBLE);
lvBlog.setVisibility(View.GONE);
getNewsListData(curNewsCatalog, 0, newsListViewHandler,
UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG);
} else {
newsListView.setVisibility(View.GONE);
lvBlog.setVisibility(View.VISIBLE);
loadLvBlogData(curNewsCatalog, 0, lvBlogHandler,
UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG);
}
}
};
}
private View.OnClickListener frameQuestionBtnClick(final Button btn,
final int catalog) {
return new View.OnClickListener() {
public void onClick(View v) {
if (btn == framebtn_Question_ask)
framebtn_Question_ask.setEnabled(false);
else
framebtn_Question_ask.setEnabled(true);
if (btn == framebtn_Question_share)
framebtn_Question_share.setEnabled(false);
else
framebtn_Question_share.setEnabled(true);
if (btn == framebtn_Question_other)
framebtn_Question_other.setEnabled(false);
else
framebtn_Question_other.setEnabled(true);
if (btn == framebtn_Question_job)
framebtn_Question_job.setEnabled(false);
else
framebtn_Question_job.setEnabled(true);
if (btn == framebtn_Question_site)
framebtn_Question_site.setEnabled(false);
else
framebtn_Question_site.setEnabled(true);
curQuestionCatalog = catalog;
loadLvQuestionData(curQuestionCatalog, 0, lvQuestionHandler,
UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG);
}
};
}
private View.OnClickListener frameTweetBtnClick(final Button btn,
final int catalog) {
return new View.OnClickListener() {
public void onClick(View v) {
if (btn == framebtn_Tweet_lastest)
framebtn_Tweet_lastest.setEnabled(false);
else
framebtn_Tweet_lastest.setEnabled(true);
if (btn == framebtn_Tweet_hot)
framebtn_Tweet_hot.setEnabled(false);
else
framebtn_Tweet_hot.setEnabled(true);
if (btn == framebtn_Tweet_my)
framebtn_Tweet_my.setEnabled(false);
else
framebtn_Tweet_my.setEnabled(true);
curTweetCatalog = catalog;
loadLvTweetData(curTweetCatalog, 0, lvTweetHandler,
UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG);
}
};
}
private View.OnClickListener frameActiveBtnClick(final Button btn,
final int catalog) {
return new View.OnClickListener() {
public void onClick(View v) {
// 判断登录
if (!appContext.isLogin()) {
if (lvActive.getVisibility() == View.VISIBLE
&& lvActiveData.isEmpty()) {
lvActive_foot_more.setText(R.string.load_empty);
lvActive_foot_progress.setVisibility(View.GONE);
} else if (lvMsg.getVisibility() == View.VISIBLE
&& lvMsgData.isEmpty()) {
lvMsg_foot_more.setText(R.string.load_empty);
lvMsg_foot_progress.setVisibility(View.GONE);
}
UIHelper.showLoginDialog(Main.this);
return;
}
frameActiveBtnOnClick(btn, catalog,
UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG);
}
};
}
private void frameActiveBtnOnClick(Button btn, int catalog, int action) {
if (btn == framebtn_Active_lastest)
framebtn_Active_lastest.setEnabled(false);
else
framebtn_Active_lastest.setEnabled(true);
if (btn == framebtn_Active_atme)
framebtn_Active_atme.setEnabled(false);
else
framebtn_Active_atme.setEnabled(true);
if (btn == framebtn_Active_comment)
framebtn_Active_comment.setEnabled(false);
else
framebtn_Active_comment.setEnabled(true);
if (btn == framebtn_Active_myself)
framebtn_Active_myself.setEnabled(false);
else
framebtn_Active_myself.setEnabled(true);
if (btn == framebtn_Active_message)
framebtn_Active_message.setEnabled(false);
else
framebtn_Active_message.setEnabled(true);
// 是否处理通知信息
if (btn == framebtn_Active_atme && bv_atme.isShown()) {
action = UIHelper.LISTVIEW_ACTION_REFRESH;
this.isClearNotice = true;
this.curClearNoticeType = Notice.TYPE_ATME;
} else if (btn == framebtn_Active_comment && bv_review.isShown()) {
action = UIHelper.LISTVIEW_ACTION_REFRESH;
this.isClearNotice = true;
this.curClearNoticeType = Notice.TYPE_COMMENT;
} else if (btn == framebtn_Active_message && bv_message.isShown()) {
action = UIHelper.LISTVIEW_ACTION_REFRESH;
this.isClearNotice = true;
this.curClearNoticeType = Notice.TYPE_MESSAGE;
}
// 非留言展示动态列表
if (btn != framebtn_Active_message) {
lvActive.setVisibility(View.VISIBLE);
lvMsg.setVisibility(View.GONE);
curActiveCatalog = catalog;
loadLvActiveData(curActiveCatalog, 0, lvActiveHandler, action);
} else {
lvActive.setVisibility(View.GONE);
lvMsg.setVisibility(View.VISIBLE);
loadLvMsgData(0, lvMsgHandler, action);
}
}
/************************************ 列表数据的加载 ***************************************/
// 加载新闻列表数据
private void getNewsListData(final int catalog, // 类别
final int pageIndex,// 页码
final Handler handler,// handler
final int action// 动作
) {
mHeadProgress.setVisibility(ProgressBar.VISIBLE);
new Thread() {
public void run() {
Message msg = new Message();
boolean isRefresh = false;
if (action == UIHelper.LISTVIEW_ACTION_REFRESH
|| action == UIHelper.LISTVIEW_ACTION_SCROLL)
isRefresh = true;
try {
NewsList list = appContext.getNewsList(catalog, pageIndex,
isRefresh);// 访问接口获取数据
msg.what = list.getPageSize();
msg.obj = list;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
msg.arg1 = action;
msg.arg2 = UIHelper.LISTVIEW_DATATYPE_NEWS;
if (curNewsCatalog == catalog)
handler.sendMessage(msg);// 发送给Handler进行数据的处理
}
}.start();
}
// 加载博客数据
private void loadLvBlogData(final int catalog, final int pageIndex,
final Handler handler, final int action) {
mHeadProgress.setVisibility(ProgressBar.VISIBLE);
new Thread() {
public void run() {
Message msg = new Message();
boolean isRefresh = false;
if (action == UIHelper.LISTVIEW_ACTION_REFRESH
|| action == UIHelper.LISTVIEW_ACTION_SCROLL)
isRefresh = true;
String type = "";
switch (catalog) {
case BlogList.CATALOG_LATEST:
type = BlogList.TYPE_LATEST;
break;
case BlogList.CATALOG_RECOMMEND:
type = BlogList.TYPE_RECOMMEND;
break;
}
try {
BlogList list = appContext.getBlogList(type, pageIndex,
isRefresh);
msg.what = list.getPageSize();
msg.obj = list;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
msg.arg1 = action;
msg.arg2 = UIHelper.LISTVIEW_DATATYPE_BLOG;
if (curNewsCatalog == catalog)
handler.sendMessage(msg);
}
}.start();
}
// 加载帖子数据
private void loadLvQuestionData(final int catalog, final int pageIndex,
final Handler handler, final int action) {
mHeadProgress.setVisibility(ProgressBar.VISIBLE);
new Thread() {
public void run() {
Message msg = new Message();
boolean isRefresh = false;
if (action == UIHelper.LISTVIEW_ACTION_REFRESH
|| action == UIHelper.LISTVIEW_ACTION_SCROLL)
isRefresh = true;
try {
PostList list = appContext.getPostList(catalog, pageIndex,
isRefresh);
msg.what = list.getPageSize();
msg.obj = list;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
msg.arg1 = action;
msg.arg2 = UIHelper.LISTVIEW_DATATYPE_POST;
if (curQuestionCatalog == catalog)
handler.sendMessage(msg);
}
}.start();
}
// 加载动弹数据
private void loadLvTweetData(final int catalog, final int pageIndex,
final Handler handler, final int action) {
mHeadProgress.setVisibility(ProgressBar.VISIBLE);
new Thread() {
public void run() {
Message msg = new Message();
boolean isRefresh = false;
if (action == UIHelper.LISTVIEW_ACTION_REFRESH
|| action == UIHelper.LISTVIEW_ACTION_SCROLL)
isRefresh = true;
try {
TweetList list = appContext.getTweetList(catalog,
pageIndex, isRefresh);
msg.what = list.getPageSize();
msg.obj = list;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
msg.arg1 = action;
msg.arg2 = UIHelper.LISTVIEW_DATATYPE_TWEET;
if (curTweetCatalog == catalog)
handler.sendMessage(msg);
}
}.start();
}
// 加载动态数据
private void loadLvActiveData(final int catalog, final int pageIndex,
final Handler handler, final int action) {
mHeadProgress.setVisibility(ProgressBar.VISIBLE);
new Thread() {
public void run() {
Message msg = new Message();
boolean isRefresh = false;
if (action == UIHelper.LISTVIEW_ACTION_REFRESH
|| action == UIHelper.LISTVIEW_ACTION_SCROLL)
isRefresh = true;
try {
ActiveList list = appContext.getActiveList(catalog,
pageIndex, isRefresh);
msg.what = list.getPageSize();
msg.obj = list;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
msg.arg1 = action;
msg.arg2 = UIHelper.LISTVIEW_DATATYPE_ACTIVE;
if (curActiveCatalog == catalog)
handler.sendMessage(msg);
}
}.start();
}
// 加载留言数据
private void loadLvMsgData(final int pageIndex, final Handler handler,
final int action) {
mHeadProgress.setVisibility(ProgressBar.VISIBLE);
new Thread() {
public void run() {
Message msg = new Message();
boolean isRefresh = false;
if (action == UIHelper.LISTVIEW_ACTION_REFRESH
|| action == UIHelper.LISTVIEW_ACTION_SCROLL)
isRefresh = true;
try {
MessageList list = appContext.getMessageList(pageIndex,
isRefresh);
msg.what = list.getPageSize();
msg.obj = list;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
msg.arg1 = action;
msg.arg2 = UIHelper.LISTVIEW_DATATYPE_MESSAGE;
handler.sendMessage(msg);
}
}.start();
}
// 生成处理列表数据的Handler
private Handler getDealListDataHandler(//
final PullToRefreshListView mListView,// 列表对象
final BaseAdapter adp, // adp
final TextView moreTextView,//
final ProgressBar progress, //
final int pageSize//
) {
return new Handler() {
@SuppressWarnings("deprecation")
public void handleMessage(Message msg) {
// 正常的对ListView数据处理
if (msg.what >= 0) {
Log.i("andli", "页数msg.what >>>>" + msg.what);// 10
Log.i("andli", "实体msg.what >>>>" + msg.obj);
Log.i("andli", "动作msg.arg1 >>>>" + msg.arg1);
Log.i("andli", "列表的类别msg.arg2 >>>>" + msg.arg2);
// 处理ListView数据,并返回Notice
Notice notice = handleListViewData(//
msg.what,// 页数
msg.obj,// 实体
msg.arg2,// 类别
msg.arg1// 动作
);
// 小于分页
if (msg.what < pageSize) {
mListView.setTag(UIHelper.LISTVIEW_DATA_FULL);
adp.notifyDataSetChanged();
moreTextView.setText(R.string.load_full);
}
// 页数相等
else if (msg.what == pageSize) {
mListView.setTag(UIHelper.LISTVIEW_DATA_MORE);
adp.notifyDataSetChanged();
moreTextView.setText(R.string.load_more);
// 特殊处理-热门动弹不能翻页
if (mListView == lvTweet) {
TweetList tlist = (TweetList) msg.obj;
if (lvTweetData.size() == tlist.getTweetCount()) {
mListView.setTag(UIHelper.LISTVIEW_DATA_FULL);
moreTextView.setText(R.string.load_full);
}
}
}
// 发送通知广播
if (notice != null) {
UIHelper.sendBroadCast(mListView.getContext(), notice);
}
// 是否清除通知信息
if (isClearNotice) {
ClearNotice(curClearNoticeType);
isClearNotice = false;// 重置
curClearNoticeType = 0;
}
}
// 有异常--显示加载出错 & 弹出错误消息
else if (msg.what == -1) {
mListView.setTag(UIHelper.LISTVIEW_DATA_MORE);
moreTextView.setText(R.string.load_error);
((AppException) msg.obj).makeToast(Main.this);
}
if (adp.getCount() == 0) {
mListView.setTag(UIHelper.LISTVIEW_DATA_EMPTY);
moreTextView.setText(R.string.load_empty);
}
progress.setVisibility(ProgressBar.GONE);
mHeadProgress.setVisibility(ProgressBar.GONE);
if (msg.arg1 == UIHelper.LISTVIEW_ACTION_REFRESH) {
Log.i("andli", "刷新完成!");
mListView
.onRefreshComplete(getString(R.string.pull_to_refresh_update)
+ new Date().toLocaleString());
mListView.setSelection(0);
} else if (msg.arg1 == UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG) {
mListView.onRefreshComplete();
mListView.setSelection(0);
}
}
};
}
// msg.what 页数
// msg.obj实体
// msg.arg2 类别
// msg.arg1动作
// 对ListView数据进行处理,同时返回Notice
private Notice handleListViewData(int pagesize, Object obj, int objtype,
int actiontype) {
Log.i("andli", "handleListViewData---actiontype---" + actiontype);
Notice notice = null;
switch (actiontype) {
// 无论是初始化还是刷新动作都执行case4里方法
case UIHelper.LISTVIEW_ACTION_INIT:// 1
case UIHelper.LISTVIEW_ACTION_REFRESH:// 2
case UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG:// 4
notice = doListView_Action_Change_Catalog(notice, pagesize, obj,
objtype, actiontype);
break;
case UIHelper.LISTVIEW_ACTION_SCROLL:// 3
notice = doListView_Action_Scroll(notice, pagesize, obj, objtype,
actiontype);
break;
}
return notice;
}
//
private Notice doListView_Action_Scroll(Notice notice, int pagesize,
Object obj, int objtype, int actiontype) {
switch (objtype) {
case UIHelper.LISTVIEW_DATATYPE_NEWS:
NewsList list = (NewsList) obj;
notice = list.getNotice();
newsListViewSumData += pagesize;
if (newsListViewData.size() > 0) {
for (News news1 : list.getNewslist()) {
boolean b = false;
for (News news2 : newsListViewData) {
if (news1.getId() == news2.getId()) {
b = true;
break;
}
}
if (!b)
newsListViewData.add(news1);
}
} else {
newsListViewData.addAll(list.getNewslist());
}
break;
case UIHelper.LISTVIEW_DATATYPE_BLOG:
BlogList blist = (BlogList) obj;
notice = blist.getNotice();
lvBlogSumData += pagesize;
if (lvBlogData.size() > 0) {
for (Blog blog1 : blist.getBloglist()) {
boolean b = false;
for (Blog blog2 : lvBlogData) {
if (blog1.getId() == blog2.getId()) {
b = true;
break;
}
}
if (!b)
lvBlogData.add(blog1);
}
} else {
lvBlogData.addAll(blist.getBloglist());
}
break;
case UIHelper.LISTVIEW_DATATYPE_POST:
PostList plist = (PostList) obj;
notice = plist.getNotice();
lvQuestionSumData += pagesize;
if (lvQuestionData.size() > 0) {
for (Post post1 : plist.getPostlist()) {
boolean b = false;
for (Post post2 : lvQuestionData) {
if (post1.getId() == post2.getId()) {
b = true;
break;
}
}
if (!b)
lvQuestionData.add(post1);
}
} else {
lvQuestionData.addAll(plist.getPostlist());
}
break;
case UIHelper.LISTVIEW_DATATYPE_TWEET:
TweetList tlist = (TweetList) obj;
notice = tlist.getNotice();
lvTweetSumData += pagesize;
if (lvTweetData.size() > 0) {
for (Tweet tweet1 : tlist.getTweetlist()) {
boolean b = false;
for (Tweet tweet2 : lvTweetData) {
if (tweet1.getId() == tweet2.getId()) {
b = true;
break;
}
}
if (!b)
lvTweetData.add(tweet1);
}
} else {
lvTweetData.addAll(tlist.getTweetlist());
}
break;
case UIHelper.LISTVIEW_DATATYPE_ACTIVE:
ActiveList alist = (ActiveList) obj;
notice = alist.getNotice();
lvActiveSumData += pagesize;
if (lvActiveData.size() > 0) {
for (Active active1 : alist.getActivelist()) {
boolean b = false;
for (Active active2 : lvActiveData) {
if (active1.getId() == active2.getId()) {
b = true;
break;
}
}
if (!b)
lvActiveData.add(active1);
}
} else {
lvActiveData.addAll(alist.getActivelist());
}
break;
case UIHelper.LISTVIEW_DATATYPE_MESSAGE:
MessageList mlist = (MessageList) obj;
notice = mlist.getNotice();
lvMsgSumData += pagesize;
if (lvMsgData.size() > 0) {
for (Messages msg1 : mlist.getMessagelist()) {
boolean b = false;
for (Messages msg2 : lvMsgData) {
if (msg1.getId() == msg2.getId()) {
b = true;
break;
}
}
if (!b)
lvMsgData.add(msg1);
}
} else {
lvMsgData.addAll(mlist.getMessagelist());
}
break;
}
return notice;
}
//
private Notice doListView_Action_Change_Catalog(Notice notice,
int pagesize, Object obj, int objtype, int actiontype) {
int newdata = 0;// 新加载数据-只有刷新动作才会使用到
switch (objtype) {
// 咨询列表刷新
case UIHelper.LISTVIEW_DATATYPE_NEWS:
NewsList newList = (NewsList) obj;
notice = newList.getNotice();
newsListViewSumData = pagesize;
// 刷新操作
if (actiontype == UIHelper.LISTVIEW_ACTION_REFRESH) {
if (newsListViewData.size() > 0) {
for (News news1 : newList.getNewslist()) {
boolean mboolean = false;
// 对比新老数据
for (News news2 : newsListViewData) {
if (news1.getId() == news2.getId()) {
mboolean = true;
break;
}
}
// 不等就新增
if (!mboolean)
newdata++;
}
} else {
newdata = pagesize;
}
}
newsListViewData.clear();// 先清除原有数据
newsListViewData.addAll(newList.getNewslist());
break;
// 博客列表刷新
case UIHelper.LISTVIEW_DATATYPE_BLOG:
BlogList blist = (BlogList) obj;
notice = blist.getNotice();
lvBlogSumData = pagesize;
if (actiontype == UIHelper.LISTVIEW_ACTION_REFRESH) {
if (lvBlogData.size() > 0) {
for (Blog blog1 : blist.getBloglist()) {
boolean b = false;
for (Blog blog2 : lvBlogData) {
if (blog1.getId() == blog2.getId()) {
b = true;
break;
}
}
if (!b)
newdata++;
}
} else {
newdata = pagesize;
}
}
lvBlogData.clear();// 先清除原有数据
lvBlogData.addAll(blist.getBloglist());
break;
// 推荐阅读列表刷新
case UIHelper.LISTVIEW_DATATYPE_POST:
PostList plist = (PostList) obj;
notice = plist.getNotice();
lvQuestionSumData = pagesize;
if (actiontype == UIHelper.LISTVIEW_ACTION_REFRESH) {
if (lvQuestionData.size() > 0) {
for (Post post1 : plist.getPostlist()) {
boolean b = false;
for (Post post2 : lvQuestionData) {
if (post1.getId() == post2.getId()) {
b = true;
break;
}
}
if (!b)
newdata++;
}
} else {
newdata = pagesize;
}
}
lvQuestionData.clear();// 先清除原有数据
lvQuestionData.addAll(plist.getPostlist());
break;
case UIHelper.LISTVIEW_DATATYPE_TWEET:
TweetList tlist = (TweetList) obj;
notice = tlist.getNotice();
lvTweetSumData = pagesize;
if (actiontype == UIHelper.LISTVIEW_ACTION_REFRESH) {
if (lvTweetData.size() > 0) {
for (Tweet tweet1 : tlist.getTweetlist()) {
boolean b = false;
for (Tweet tweet2 : lvTweetData) {
if (tweet1.getId() == tweet2.getId()) {
b = true;
break;
}
}
if (!b)
newdata++;
}
} else {
newdata = pagesize;
}
}
lvTweetData.clear();// 先清除原有数据
lvTweetData.addAll(tlist.getTweetlist());
break;
case UIHelper.LISTVIEW_DATATYPE_ACTIVE:
ActiveList alist = (ActiveList) obj;
notice = alist.getNotice();
lvActiveSumData = pagesize;
if (actiontype == UIHelper.LISTVIEW_ACTION_REFRESH) {
if (lvActiveData.size() > 0) {
for (Active active1 : alist.getActivelist()) {
boolean b = false;
for (Active active2 : lvActiveData) {
if (active1.getId() == active2.getId()) {
b = true;
break;
}
}
if (!b)
newdata++;
}
} else {
newdata = pagesize;
}
}
lvActiveData.clear();// 先清除原有数据
lvActiveData.addAll(alist.getActivelist());
break;
case UIHelper.LISTVIEW_DATATYPE_MESSAGE:
MessageList mlist = (MessageList) obj;
notice = mlist.getNotice();
lvMsgSumData = pagesize;
if (actiontype == UIHelper.LISTVIEW_ACTION_REFRESH) {
if (lvMsgData.size() > 0) {
for (Messages msg1 : mlist.getMessagelist()) {
boolean b = false;
for (Messages msg2 : lvMsgData) {
if (msg1.getId() == msg2.getId()) {
b = true;
break;
}
}
if (!b)
newdata++;
}
} else {
newdata = pagesize;
}
}
lvMsgData.clear();// 先清除原有数据
lvMsgData.addAll(mlist.getMessagelist());
break;
}
// 如果是刷新动作
if (actiontype == UIHelper.LISTVIEW_ACTION_REFRESH) {
if (newdata > 0) {
// 提示新加载数据:播放声音
String text = getString(R.string.new_data_toast_message,
newdata);
NewDataToast.makeText(this, text, appContext.isAppSound())
.show();
} else {
// 提示无新数据:不播放提示音
NewDataToast.makeText(this, "没有新更新", false).show();
}
}
return notice;
}
/************************************ 通知信息的处理 ***************************************/
// 轮询通知信息
private void foreachUserNotice() {
final int uid = appContext.getLoginUid();
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1) {
UIHelper.sendBroadCast(Main.this, (Notice) msg.obj);
}
foreachUserNotice();// 回调
}
};
new Thread() {
public void run() {
Message msg = new Message();
try {
sleep(60 * 1000);
if (uid > 0) {
Notice notice = appContext.getUserNotice(uid);
msg.what = 1;
msg.obj = notice;
} else {
msg.what = 0;
}
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
} catch (Exception e) {
e.printStackTrace();
msg.what = -1;
}
handler.sendMessage(msg);
}
}.start();
}
/**
* 通知信息处理
*
* @param type
* 1:@我的信息 2:未读消息 3:评论个数 4:新粉丝个数
*/
private void ClearNotice(final int type) {
final int uid = appContext.getLoginUid();
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 1 && msg.obj != null) {
Result res = (Result) msg.obj;
if (res.OK() && res.getNotice() != null) {
UIHelper.sendBroadCast(Main.this, res.getNotice());
}
} else {
((AppException) msg.obj).makeToast(Main.this);
}
}
};
new Thread() {
public void run() {
Message msg = new Message();
try {
Result res = appContext.noticeClear(uid, type);
msg.what = 1;
msg.obj = res;
} catch (AppException e) {
e.printStackTrace();
msg.what = -1;
msg.obj = e;
}
handler.sendMessage(msg);
}
}.start();
}
/************************************ 菜单,按钮事件 ***************************************/
// 停用原生菜单
public boolean onCreateOptionsMenu(Menu menu) {
return false;
// MenuInflater inflater = getMenuInflater();
// inflater.inflate(R.menu.main_menu, menu);
// return true;
}
// 菜单被显示之前的事件
public boolean onPrepareOptionsMenu(Menu menu) {
UIHelper.showMenuLoginOrLogout(this, menu);
return true;
}
// 处理menu的事件
public boolean onOptionsItemSelected(MenuItem item) {
int item_id = item.getItemId();
switch (item_id) {
case R.id.main_menu_user:
UIHelper.loginOrLogout(this);
break;
case R.id.main_menu_about:
UIHelper.showAbout(this);
break;
case R.id.main_menu_setting:
UIHelper.showSetting(this);
break;
case R.id.main_menu_exit:
UIHelper.Exit(this);
break;
}
return true;
}
// 按钮事件---监听返回--是否退出程序
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean flag = true;
if (keyCode == KeyEvent.KEYCODE_BACK) {
UIHelper.Exit(this);// 是否退出应用
} else if (keyCode == KeyEvent.KEYCODE_MENU) {
UIHelper.showSettingLoginOrLogout(Main.this,
mGrid.getQuickAction(0));// 展示快捷栏&判断是否登录
mGrid.show(fbSetting, true);
} else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
UIHelper.showSearch(Main.this);// 展示搜索页
} else {
flag = super.onKeyDown(keyCode, event);
}
return flag;
}
}