在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → 开源社区android源码

开源社区android源码

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:7.51M
  • 下载次数:21
  • 浏览次数:508
  • 发布时间:2015-09-07
  • 实例类别:Android平台开发
  • 发 布 人:pandrawla
  • 文件格式:.rar
  • 所需积分:2
 相关标签: Android 源码 d

实例介绍

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.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.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
 */
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 lvNews;
private PullToRefreshListView lvBlog;
private PullToRefreshListView lvQuestion;
private PullToRefreshListView lvTweet;
private PullToRefreshListView lvActive;
private PullToRefreshListView lvMsg;

private ListViewNewsAdapter lvNewsAdapter;
private ListViewBlogAdapter lvBlogAdapter;
private ListViewQuestionAdapter lvQuestionAdapter;
private ListViewTweetAdapter lvTweetAdapter;
private ListViewActiveAdapter lvActiveAdapter;
private ListViewMessageAdapter lvMsgAdapter;

private List<News> lvNewsData = 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 lvNewsHandler;
private Handler lvBlogHandler;
private Handler lvQuestionHandler;
private Handler lvTweetHandler;
private Handler lvActiveHandler;
private Handler lvMsgHandler;

private int lvNewsSumData;
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 lvNews_footer;
private View lvBlog_footer;
private View lvQuestion_footer;
private View lvTweet_footer;
private View lvActive_footer;
private View lvMsg_footer;

private TextView lvNews_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 lvNews_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.initFrameListView();
        
        //检查新版本
        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 initFrameListView()
    {
    //初始化listview控件
this.initNewsListView();
this.initBlogListView();
this.initQuestionListView();
this.initTweetListView();
this.initActiveListView();
this.initMsgListView();
//加载listview数据
this.initFrameListViewData();
    }
    /**
     * 初始化所有ListView数据
     */
    private void initFrameListViewData()
    {
        //初始化Handler
        lvNewsHandler = this.getLvHandler(lvNews, lvNewsAdapter, lvNews_foot_more, lvNews_foot_progress, AppContext.PAGE_SIZE);
        lvBlogHandler = this.getLvHandler(lvBlog, lvBlogAdapter, lvBlog_foot_more, lvBlog_foot_progress, AppContext.PAGE_SIZE);
        lvQuestionHandler = this.getLvHandler(lvQuestion, lvQuestionAdapter, lvQuestion_foot_more, lvQuestion_foot_progress, AppContext.PAGE_SIZE);  
        lvTweetHandler = this.getLvHandler(lvTweet, lvTweetAdapter, lvTweet_foot_more, lvTweet_foot_progress, AppContext.PAGE_SIZE);  
        lvActiveHandler = this.getLvHandler(lvActive, lvActiveAdapter, lvActive_foot_more, lvActive_foot_progress, AppContext.PAGE_SIZE); 
        lvMsgHandler = this.getLvHandler(lvMsg, lvMsgAdapter, lvMsg_foot_more, lvMsg_foot_progress, AppContext.PAGE_SIZE);      
   
        //加载资讯数据
if(lvNewsData.isEmpty()) {
loadLvNewsData(curNewsCatalog, 0, lvNewsHandler, UIHelper.LISTVIEW_ACTION_INIT);
}
    }
    /**
     * 初始化新闻列表
     */
    private void initNewsListView()
    {
        lvNewsAdapter = new ListViewNewsAdapter(this, lvNewsData, R.layout.news_listitem);        
        lvNews_footer = getLayoutInflater().inflate(R.layout.listview_footer, null);
        lvNews_foot_more = (TextView)lvNews_footer.findViewById(R.id.listview_foot_more);
        lvNews_foot_progress = (ProgressBar)lvNews_footer.findViewById(R.id.listview_foot_progress);
        lvNews = (PullToRefreshListView)findViewById(R.id.frame_listview_news);
        lvNews.addFooterView(lvNews_footer);//添加底部视图  必须在setAdapter前
        lvNews.setAdapter(lvNewsAdapter); 
        lvNews.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        //点击头部、底部栏无效
        if(position == 0 || view == lvNews_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);
        }        
});
        lvNews.setOnScrollListener(new AbsListView.OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
lvNews.onScrollStateChanged(view, scrollState);

//数据为空--不用继续下面代码了
if(lvNewsData.isEmpty()) return;

//判断是否滚动到底部
boolean scrollEnd = false;
try {
if(view.getPositionForView(lvNews_footer) == view.getLastVisiblePosition())
scrollEnd = true;
} catch (Exception e) {
scrollEnd = false;
}

int lvDataState = StringUtils.toInt(lvNews.getTag());
if(scrollEnd && lvDataState==UIHelper.LISTVIEW_DATA_MORE)
{
lvNews.setTag(UIHelper.LISTVIEW_DATA_LOADING);
lvNews_foot_more.setText(R.string.load_ing);
lvNews_foot_progress.setVisibility(View.VISIBLE);
//当前pageIndex
int pageIndex = lvNewsSumData/AppContext.PAGE_SIZE;
loadLvNewsData(curNewsCatalog, pageIndex, lvNewsHandler, UIHelper.LISTVIEW_ACTION_SCROLL);
}
}
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
lvNews.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
}
});
        lvNews.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
            public void onRefresh() {
            loadLvNewsData(curNewsCatalog, 0, lvNewsHandler, 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(lvNews.getVisibility() == View.VISIBLE)
lvNews.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(lvNews.getVisibility() == View.VISIBLE) {
if(lvNewsData.isEmpty()) {
loadLvNewsData(curNewsCatalog, 0, lvNewsHandler, 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)
    {
    lvNews.setVisibility(View.VISIBLE);
    lvBlog.setVisibility(View.GONE);

loadLvNewsData(curNewsCatalog, 0, lvNewsHandler, UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG);
    }
    else
    {
    lvNews.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);
    }
    }
    /**
     * 获取listview的初始化Handler
     * @param lv
     * @param adapter
     * @return
     */
    private Handler getLvHandler(final PullToRefreshListView lv,final BaseAdapter adapter,final TextView more,final ProgressBar progress,final int pageSize){
    return new Handler(){
public void handleMessage(Message msg) {
if(msg.what >= 0){
//listview数据处理
Notice notice = handleLvData(msg.what, msg.obj, msg.arg2, msg.arg1);

if(msg.what < pageSize){
lv.setTag(UIHelper.LISTVIEW_DATA_FULL);
adapter.notifyDataSetChanged();
more.setText(R.string.load_full);
}else if(msg.what == pageSize){
lv.setTag(UIHelper.LISTVIEW_DATA_MORE);
adapter.notifyDataSetChanged();
more.setText(R.string.load_more);

//特殊处理-热门动弹不能翻页
if(lv == lvTweet) {
TweetList tlist = (TweetList)msg.obj;
if(lvTweetData.size() == tlist.getTweetCount()){
lv.setTag(UIHelper.LISTVIEW_DATA_FULL);
more.setText(R.string.load_full);
}
}
}
//发送通知广播
if(notice != null){
UIHelper.sendBroadCast(lv.getContext(), notice);
}
//是否清除通知信息
if(isClearNotice){
ClearNotice(curClearNoticeType);
isClearNotice = false;//重置
curClearNoticeType = 0;
}
}
else if(msg.what == -1){
//有异常--显示加载出错 & 弹出错误消息
lv.setTag(UIHelper.LISTVIEW_DATA_MORE);
more.setText(R.string.load_error);
((AppException)msg.obj).makeToast(Main.this);
}
if(adapter.getCount()==0){
lv.setTag(UIHelper.LISTVIEW_DATA_EMPTY);
more.setText(R.string.load_empty);
}
progress.setVisibility(ProgressBar.GONE);
mHeadProgress.setVisibility(ProgressBar.GONE);
if(msg.arg1 == UIHelper.LISTVIEW_ACTION_REFRESH){
lv.onRefreshComplete(getString(R.string.pull_to_refresh_update) new Date().toLocaleString());
lv.setSelection(0);
}else if(msg.arg1 == UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG){
lv.onRefreshComplete();
lv.setSelection(0);
}
}
};
    }
    /**
     * listview数据处理
     * @param what 数量
     * @param obj 数据
     * @param objtype 数据类型
     * @param actiontype 操作类型
     * @return notice 通知信息
     */
    private Notice handleLvData(int what,Object obj,int objtype,int actiontype){
    Notice notice = null;
switch (actiontype) {
case UIHelper.LISTVIEW_ACTION_INIT:
case UIHelper.LISTVIEW_ACTION_REFRESH:
case UIHelper.LISTVIEW_ACTION_CHANGE_CATALOG:
int newdata = 0;//新加载数据-只有刷新动作才会使用到
switch (objtype) {
case UIHelper.LISTVIEW_DATATYPE_NEWS:
NewsList nlist = (NewsList)obj;
notice = nlist.getNotice();
lvNewsSumData = what;
if(actiontype == UIHelper.LISTVIEW_ACTION_REFRESH){
if(lvNewsData.size() > 0){
for(News news1 : nlist.getNewslist()){
boolean b = false;
for(News news2 : lvNewsData){
if(news1.getId() == news2.getId()){
b = true;
break;
}
}
if(!b) newdata ;
}
}else{
newdata = what;
}
}
lvNewsData.clear();//先清除原有数据
lvNewsData.addAll(nlist.getNewslist());
break;
case UIHelper.LISTVIEW_DATATYPE_BLOG:
BlogList blist = (BlogList)obj;
notice = blist.getNotice();
lvBlogSumData = what;
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 = what;
}
}
lvBlogData.clear();//先清除原有数据
lvBlogData.addAll(blist.getBloglist());
break;
case UIHelper.LISTVIEW_DATATYPE_POST:
PostList plist = (PostList)obj;
notice = plist.getNotice();
lvQuestionSumData = what;
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 = what;
}
}
lvQuestionData.clear();//先清除原有数据
lvQuestionData.addAll(plist.getPostlist());
break;
case UIHelper.LISTVIEW_DATATYPE_TWEET:
TweetList tlist = (TweetList)obj;
notice = tlist.getNotice();
lvTweetSumData = what;
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 = what;
}
}
lvTweetData.clear();//先清除原有数据
lvTweetData.addAll(tlist.getTweetlist());
break;
case UIHelper.LISTVIEW_DATATYPE_ACTIVE:
ActiveList alist = (ActiveList)obj;
notice = alist.getNotice();
lvActiveSumData = what;
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 = what;
}
}
lvActiveData.clear();//先清除原有数据
lvActiveData.addAll(alist.getActivelist());
break;
case UIHelper.LISTVIEW_DATATYPE_MESSAGE:
MessageList mlist = (MessageList)obj;
notice = mlist.getNotice();
lvMsgSumData = what;
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 = what;
}
}
lvMsgData.clear();//先清除原有数据
lvMsgData.addAll(mlist.getMessagelist());
break;
}
if(actiontype == UIHelper.LISTVIEW_ACTION_REFRESH){
//提示新加载数据
if(newdata >0){
NewDataToast.makeText(this, getString(R.string.new_data_toast_message, newdata), appContext.isAppSound()).show();
}else{
NewDataToast.makeText(this, getString(R.string.new_data_toast_none), false).show();
}
}
break;
case UIHelper.LISTVIEW_ACTION_SCROLL:
switch (objtype) {
case UIHelper.LISTVIEW_DATATYPE_NEWS:
NewsList list = (NewsList)obj;
notice = list.getNotice();
lvNewsSumData = what;
if(lvNewsData.size() > 0){
for(News news1 : list.getNewslist()){
boolean b = false;
for(News news2 : lvNewsData){
if(news1.getId() == news2.getId()){
b = true;
break;
}
}
if(!b) lvNewsData.add(news1);
}
}else{
lvNewsData.addAll(list.getNewslist());
}
break;
case UIHelper.LISTVIEW_DATATYPE_BLOG:
BlogList blist = (BlogList)obj;
notice = blist.getNotice();
lvBlogSumData = what;
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 = what;
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 = what;
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 = what;
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 = what;
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;
}
break;
}
return notice;
    }
    /**
     * 线程加载新闻数据
     * @param catalog 分类
     * @param pageIndex 当前页数
     * @param handler 处理器
     * @param action 动作标识
     */
private void loadLvNewsData(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 {
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);
}
}.start();

    /**
     * 线程加载博客数据
     * @param catalog 分类
     * @param pageIndex 当前页数
     * @param handler 处理器
     * @param action 动作标识
     */
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();

    /**
     * 线程加载帖子数据
     * @param catalog 分类
     * @param pageIndex 当前页数
     * @param handler 处理器
     * @param action 动作标识
     */
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();
}
    /**
     * 线程加载动弹数据
     * @param catalog -1 热门,0 最新,大于0 某用户的动弹(uid)
     * @param pageIndex 当前页数
     * @param handler 处理器
     * @param action 动作标识
     */
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();
}
/**
* 线程加载动态数据
* @param catalog
* @param pageIndex 当前页数
* @param handler
* @param action
*/
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();
}
/**
* 线程加载留言数据
* @param pageIndex 当前页数
* @param handler
* @param action
*/
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();
}

/**
* 轮询通知信息
*/
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();
}

/**
* 创建menu TODO 停用原生菜单
*/
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;
}
}


标签: Android 源码 d

实例下载地址

开源社区android源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警