您的位置:首页 > 移动开发 > 微信开发

仿微信滑动Tab框架

2016-01-30 15:51 411 查看
1.activity界面

package cn.com.dsyc.canteenappforseller;

import cn.com.dsyc.canteenappforseller.widget.ActionBarItem;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class MainActivity extends FragmentActivity implements MyReceiver.OnReceiveListener {

private MyReceiver mReceiver;
private ActionBarItem[] mActionBarItems;
private FragmentBase[] mFragments;
private ViewPager mViewPager;
private int mPosition;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mReceiver = new MyReceiver(this);
mReceiver.register(this);
findWidget();
createTabs();
}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();

mReceiver.unregister(this);
}

@Override
public void onReceive(String action) {
// TODO Auto-generated method stub
if (action.equals(MyReceiver.ACTION_LOGOUT)) {
finish();
}
}

private void createTabs() {
OnClickListener tabItemClickListener = new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int position = (Integer)v.getTag();
mViewPager.setCurrentItem(position, false);
}

};

mActionBarItems = new ActionBarItem[]{
new ActionBarItem(this, R.string.scan, R.drawable.scan_selected, R.drawable.scan_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color),
new ActionBarItem(this, R.string.manage, R.drawable.manage_selected, R.drawable.manage_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color),
new ActionBarItem(this, R.string.me, R.drawable.me_selected, R.drawable.me_normal, R.color.action_bar_text_on_color, R.color.action_bar_text_color)
};
for (int i = 0; i < mActionBarItems.length; i++) {
mActionBarItems[i].setTag(i);
mActionBarItems[i].setOnClickListener(tabItemClickListener);
}

LinearLayout llTabs = (LinearLayout)findViewById(R.id.ll_tabs);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT);
layoutParams.weight = 1;
for (ActionBarItem tabItem : mActionBarItems) {
llTabs.addView(tabItem, layoutParams);
}

mFragments = new FragmentBase[] {
new ScanFragment(),
new ManageFragment(),
new MeFragment()
};

mViewPager.setOffscreenPageLimit(mFragments.length - 1);
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()){

@Override
public Fragment getItem(int position) {
// TODO Auto-generated method stub
return mFragments[position];
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return mFragments.length;
}

});
mViewPager.setOnPageChangeListener(new OnPageChangeListener(){

@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
// TODO Auto-generated method stub
if (positionOffset > 0) {
if (mPosition == position)
transitTabItem(position + 1, positionOffset);
else
transitTabItem(position, 1 - positionOffset);
}
}

@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
setTabItemOn(position);
}

@Override
public void onPageScrollStateChanged(int state) {
// TODO Auto-generated method stub

}

});

mPosition = 0;
mActionBarItems[mPosition].setOnPercent(1);
mViewPager.setCurrentItem(mPosition);
}<pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;"> private void findWidget() {</span> mViewPager = (ViewPager)findViewById(R.id.vp);}private void transitTabItem(int position, float percent) {mActionBarItems[position].setOnPercent(percent);mActionBarItems[position].setOnPercent(percent);}private void setTabItemOn(int position)
{mActionBarItems[mPosition].setOnPercent(0);mPosition = position;mActionBarItems[mPosition].setOnPercent(1);}}


2、activity_main.xml界面

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context=".MainActivity" >

<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/divider" />

<View
android:id="@id/divider"
style="@style/Divider"
android:layout_above="@+id/ll_tabs" />

<LinearLayout
android:id="@+id/ll_tabs"
android:layout_width="match_parent"
android:layout_height="@dimen/action_bar_height"
android:layout_alignParentBottom="true"
android:background="@color/action_bar_background"
android:orientation="horizontal" />

</RelativeLayout>3.ActionBarItem.java
package cn.com.dsyc.canteenappforseller.widget;

import cn.com.dsyc.canteenappforseller.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

public class ActionBarItem extends FrameLayout {

private ActionBarIconView mTabIconView;
private ActionBarTitleView mTabTitleView;
private ImageView mImageViewUnread;
private TextView mTextViewUnread;

public ActionBarItem(Context context) {
super(context);
// TODO Auto-generated constructor stub
init();
}

public ActionBarItem(Context context, int textId, int onResId, int offResId, int onTextColorId, int offTextColorId) {
super(context);
// TODO Auto-generated constructor stub
init();

mTabIconView.setImageResource(onResId, offResId);
mTabTitleView.setTextColorResource(onTextColorId, offTextColorId);
mTabTitleView.setText(textId);
mImageViewUnread.setVisibility(GONE);
mTextViewUnread.setVisibility(GONE);
}

public void setUnread(boolean hasUnread) {
mImageViewUnread.setVisibility(hasUnread ? VISIBLE : GONE);
mTextViewUnread.setVisibility(GONE);
}

public void setUnread(int count) {
mImageViewUnread.setVisibility(GONE);
if (count == 0) {
mTextViewUnread.setVisibility(GONE);
} else {
mTextViewUnread.setVisibility(VISIBLE);
mTextViewUnread.setText(String.valueOf(count));
}
}

public void setOnPercent(float onPercent) {
mTabIconView.setOnPercent(onPercent);
mTabTitleView.setOnPercent(onPercent);
}

private void init() {
LayoutInflater.from(getContext()).inflate(R.layout.action_bar_item, this, true);
findWidget();
}

private void findWidget() {
mTabIconView = (ActionBarIconView)findViewById(R.id.tiv);
mTabTitleView = (ActionBarTitleView)findViewById(R.id.ttv);
mImageViewUnread = (ImageView)findViewById(R.id.iv_unread);
mTextViewUnread = (TextView)findViewById(R.id.tv_unread);
}
}
4、ActionBarIconView.java
package cn.com.dsyc.canteenappforseller.widget;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.util.AttributeSet;
import android.widget.ImageView;

public class ActionBarIconView extends ImageView {
private LayerDrawable mLayerDrawable;

public ActionBarIconView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

public ActionBarIconView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}

public ActionBarIconView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}

public void setImageResource(int onResId, int offResId) {
// TODO Auto-generated method stub
Drawable[] drawables = new Drawable[] {
getResources().getDrawable(onResId),
getResources().getDrawable(offResId) };
mLayerDrawable = new LayerDrawable(drawables);
setOnPercent(0);
}

public void setOnPercent(float onPercent) {
mLayerDrawable.getDrawable(0).setAlpha(Math.round(255 * onPercent));
mLayerDrawable.getDrawable(1).setAlpha(Math.round(255 * (1 - onPercent)));
setImageDrawable(mLayerDrawable);
}
}
5.ActionBarTitleView.java
package cn.com.dsyc.canteenappforseller.widget;

import cn.com.dsyc.canteenappforseller.utility.ColorHelper;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class ActionBarTitleView extends TextView {
private int mOnColor;
private int mOffColor;

public ActionBarTitleView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

public ActionBarTitleView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}

public ActionBarTitleView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}

public void setTextColorResource(int onColorId, int offColorId) {
// TODO Auto-generated method stub
mOnColor = getResources().getColor(onColorId);
mOffColor = getResources().getColor(offColorId);
}

public void setOnPercent(float onPercent) {
int color = ColorHelper.getMixColor(mOnColor, onPercent, mOffColor, 1 - onPercent);
setTextColor(color);
}
}


5.ManageFragment.java
package cn.com.dsyc.canteenappforseller;

import android.content.Intent;
import android.os.Bundle;
fe28
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class ManageFragment extends FragmentBase {

private ListView mListView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_manage, container, false);
setTitleText(view, R.string.manage);

findWidget(view);
show();

return view;
}

private void findWidget(View view) {
mListView = (ListView)view.findViewById(R.id.lv);
}

private void show() {
SettingItem[] items = {
new SettingItem(R.drawable.manage_canteen, R.string.manage_canteen),
new SettingItem(R.drawable.manage_category, R.string.manage_category),
new SettingItem(R.drawable.manage_dish, R.string.manage_dish),
new SettingItem(R.drawable.manage_period, R.string.manage_period),
new SettingItem(R.drawable.manage_schedule, R.string.manage_schedule),
new SettingItem(R.drawable.manage_order, R.string.manage_order),
new SettingItem(R.drawable.manage_comment, R.string.manage_comment),
new SettingItem(R.drawable.manage_preview, R.string.manage_preview)
};
mListView.setAdapter(new SettingAdapter(getActivity(), items));
mListView.setOnItemClickListener(new OnItemClickListener(){

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int)id) {
case R.string.manage_canteen: showCanteen(); break;
case R.string.manage_category: showCategory();break;
case R.string.manage_dish: showDish();break;
case R.string.manage_period: showPeriod();break;
case R.string.manage_schedule: showSchedule(); break;
case R.string.manage_order: showOrder();break;
case R.string.manage_comment: showComment(); break;
case R.string.manage_preview: showPreview();break;
}
}

});
}

private void showPreview() {
Intent intent = new Intent(getActivity(), PreviewActivity.class);
startActivity(intent);
}
private void showOrder() {
Intent intent = new Intent(getActivity(), OrderActivity.class);
startActivity(intent);
}
private void showPeriod() {
Intent intent = new Intent(getActivity(), PeriodActivity.class);
startActivity(intent);
}

private void showDish() {
Intent intent = new Intent(getActivity(), DishActivity.class);
startActivity(intent);
}

private void showCategory() {
Intent intent = new Intent(getActivity(), CategoryActivity.class);
startActivity(intent);

}

private void showCanteen() {
Intent intent = new Intent(getActivity(), CanteenActivity.class);
startActivity(intent);
}

private void showSchedule() {
Intent intent = new Intent(getActivity(), ScheduleActivity.class);
startActivity(intent);
}

private void showComment() {
Intent intent = new Intent(getActivity(), DishCommentActivity.class);
startActivity(intent);
}
}


6.MeFragment.java
package cn.com.dsyc.canteenappforseller;

import cn.com.dsyc.canteenappforseller.model.Seller;
import cn.com.dsyc.canteenappforseller.utility.RequestCode;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class MeFragment extends FragmentBase {

private ListView mListViewSeller;
private ListView mListViewCommon;
private ListView mListViewWallet;
private ListView mListViewSetting;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_me, container, false);
setTitleText(view, R.string.me);

findWidget(view);
showSeller();
showCommon();
showWallet();
showSetting();

return view;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == RequestCode.EDIT) {
if (resultCode == Activity.RESULT_OK)
showSeller();
}
}

private void findWidget(View view) {
mListViewSeller = (ListView) view.findViewById(R.id.lv_seller);
mListViewCommon = (ListView) view.findViewById(R.id.lv_common);
mListViewWallet = (ListView) view.findViewById(R.id.lv_wallet);
mListViewSetting = (ListView) view.findViewById(R.id.lv_setting);
}

private void showSeller() {
App app = (App) getActivity().getApplication();
Seller model = app.getSeller();
SettingItem[] items = {
new SettingItem(R.drawable.seller, R.string.me_seller, model.UserName) };
mListViewSeller.setAdapter(new SettingAdapter(getActivity(), items));
mListViewSeller.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_seller:
doSeller();
break;
}
}

});
}

private void showCommon() {
SettingItem[] items = {
new SettingItem(R.drawable.photo_album, R.string.me_photo_album),
new SettingItem(R.drawable.favorites, R.string.me_favorites),
new SettingItem(R.drawable.share, R.string.me_share) };
mListViewCommon.setAdapter(new SettingAdapter(getActivity(), items));
mListViewCommon.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_share:
doShare();
break;
}
}

});
}

private void showWallet() {
SettingItem[] items = { new SettingItem(R.drawable.wallet,
R.string.me_wallet), };
mListViewWallet.setAdapter(new SettingAdapter(getActivity(), items));
}

private void showSetting() {
SettingItem[] items = { new SettingItem(R.drawable.setting,
R.string.me_setting), };
mListViewSetting.setAdapter(new SettingAdapter(getActivity(), items));
mListViewSetting.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
switch ((int) id) {
case R.string.me_setting:
doSetting();
break;
}
}

});
}

private void doSeller() {
Intent intent = new Intent(getActivity(), PersonalInfoActivity.class);
startActivity(intent);
}

private void doShare() {
Intent intent = new Intent(getActivity(), ShareActivity.class);
startActivity(intent);
}

private void doSetting() {
Intent intent = new Intent(getActivity(), SettingActivity.class);
startActivity(intent);
}
}

package cn.com.dsyc.canteenappforseller;

import android.content.DialogInterface.OnDismissListener;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public abstract class FragmentBase extends Fragment implements MyHandler.OnHandleListener {

private MyHandler mHandler = new MyHandler(this);
private ProgressDialog mProgressDialog;

private boolean mFindWidget = true;
private ImageButton mTitleBarImageButtonBackArrow;
private View mTitleBarDivider;
private TextView mTitleBarTextViewTitle;
private Button mTitleBarButtonTitle;
private FrameLayout mTitleBarFrameLayout1;
private ImageButton mTitleBarImageButton1;
private ImageView mTitleBarImageView1;
private FrameLayout mTitleBarFrameLayout2;
private ImageButton mTitleBarImageButton2;
private ImageView mTitleBarImageView2;
private Button mTitleBarButton;
private RelativeLayout mLoadingBarRelativeLayout;

protected void setTitleText(View view, int resId) {
findWidget(view);
mTitleBarTextViewTitle.setText(resId);
}

protected void setTitleButton(View view, String text, Object tag, OnClickListener listener) {
findWidget(view);
mTitleBarButtonTitle.setText(text);
mTitleBarButtonTitle.setTag(tag);
if (listener == null)
mTitleBarButtonTitle.setEnabled(false);
else {
mTitleBarButtonTitle.setEnabled(true);
mTitleBarButtonTitle.setOnClickListener(listener);
}
}

protected void showBackArrow(View view, OnClickListener l) {
findWidget(view);
mTitleBarImageButtonBackArrow.setVisibility(View.VISIBLE);
mTitleBarImageButtonBackArrow.setOnClickListener(l);
mTitleBarDivider.setVisibility(View.VISIBLE);
}

protected void showImageButton1(View view, int resId, OnClickListener l) {
findWidget(view);
mTitleBarImageButton1.setImageResource(resId);
mTitleBarImageButton1.setOnClickListener(l);
mTitleBarFrameLayout1.setVisibility(View.VISIBLE);
}

protected void showImageView1(boolean visible) {
mTitleBarImageView1.setVisibility(visible ? View.VISIBLE : View.GONE);
}

protected void showImageButton2(View view, int resId, OnClickListener l) {
findWidget(view);
mTitleBarImageButton2.setImageResource(resId);
mTitleBarImageButton2.setOnClickListener(l);
mTitleBarFrameLayout2.setVisibility(View.VISIBLE);
}

protected void showImageView2(boolean visible) {
mTitleBarImageView2.setVisibility(visible ? View.VISIBLE : View.GONE);
}

protected void showButton(View view, int resId, OnClickListener l) {
findWidget(view);
mTitleBarButton.setText(resId);
mTitleBarButton.setOnClickListener(l);
mTitleBarButton.setVisibility(View.VISIBLE);
}

protected void enableButton(View view, boolean enabled) {
findWidget(view);
mTitleBarButton.setEnabled(enabled);
}

protected void showProgressDialog(int textId) {
mProgressDialog = new ProgressDialog(getActivity(), textId);
mProgressDialog.show();
}

protected void hideProgressDialog() {
if (mProgressDialog == null) return;
mProgressDialog.dismiss();
mProgressDialog = null;
}

protected void showLoadingBar() {
mLoadingBarRelativeLayout.setVisibility(View.VISIBLE);
}

protected void hideLoadingBar() {
mLoadingBarRelativeLayout.setVisibility(View.GONE);
}

protected void sendMessage(int what) {
sendMessage(what, null);
}

protected void sendMessage(int what, Object obj) {
Message message = mHandler.obtainMessage();
message.what = what;
message.obj = obj;
mHandler.sendMessage(message);
}

@Override
public void onHandle(int what, Object obj) {

}

protected void showAlertDialog(int messageId, int titleId, OnDismissListener l) {
String message = getString(messageId);
showAlertDialog(message, titleId, l);
}

protected void showAlertDialog(String message, int titleId, OnDismissListener l) {
AlertDialog dialog = new AlertDialog(getActivity(), message, titleId);
dialog.setOnDismissListener(l);
dialog.show();
}

protected void showAlertDialog(int messageId) {
showAlertDialog(messageId, -1, null);
}

protected void showAlertDialog(int messageId, int titleId) {
showAlertDialog(messageId, titleId, null);
}

protected void showAlertDialog(String message) {
showAlertDialog(message, -1, null);
}

protected void showAlertDialog(String message, int titleId) {
showAlertDialog(message, titleId, null);
}

private void findWidget(View view) {
if (!mFindWidget)
return;

mFindWidget = false;
mTitleBarImageButtonBackArrow = (ImageButton)view.findViewById(R.id.title_bar_ib_back_arrow);
mTitleBarDivider = view.findViewById(R.id.title_bar_divider);
mTitleBarTextViewTitle = (TextView)view.findViewById(R.id.title_bar_tv_title);
mTitleBarButtonTitle = (Button)view.findViewById(R.id.title_bar_btn_title);
mTitleBarFrameLayout1 = (FrameLayout)view.findViewById(R.id.title_bar_fl1);
mTitleBarImageButton1 = (ImageButton)view.findViewById(R.id.title_bar_ib1);
mTitleBarImageView1 = (ImageView)view.findViewById(R.id.title_bar_iv1);
mTitleBarFrameLayout2 = (FrameLayout)view.findViewById(R.id.title_bar_fl2);
mTitleBarImageButton2 = (ImageButton)view.findViewById(R.id.title_bar_ib2);
mTitleBarImageView2 = (ImageView)view.findViewById(R.id.title_bar_iv2);
mTitleBarButton = (Button)view.findViewById(R.id.title_bar_btn);
mLoadingBarRelativeLayout = (RelativeLayout)view.findViewById(R.id.loading_bar_rl);
}

}


package cn.com.dsyc.canteenappforseller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import in.srain.cube.views.loadmore.LoadMoreContainer;
import in.srain.cube.views.loadmore.LoadMoreHandler;
import in.srain.cube.views.loadmore.LoadMoreListViewContainer;
import in.srain.cube.views.ptr.PtrClassicFrameLayout;
import in.srain.cube.views.ptr.PtrDefaultHandler;
import in.srain.cube.views.ptr.PtrFrameLayout;
import in.srain.cube.views.ptr.PtrHandler;
import cn.com.dsyc.canteenappforseller.apiclient.ApiException;
import cn.com.dsyc.canteenappforseller.apiclient.ApiOrder;
import cn.com.dsyc.canteenappforseller.apiclient.ApiOrderItem;
import cn.com.dsyc.canteenappforseller.model.Canteen;
import cn.com.dsyc.canteenappforseller.model.OrderEx;
import cn.com.dsyc.canteenappforseller.model.OrderItemEx;
import cn.com.dsyc.canteenappforseller.model.Seller;
import cn.com.dsyc.canteenappforseller.utility.RequestCode;
import cn.com.dsyc.canteenappforseller.widget.LoadMoreFooterView;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;

public class ScanFragment extends FragmentBase {

private final static int PAGE_SIZE = 5;
private PtrClassicFrameLayout mPtrClassicFrameLayout;
private LoadMoreListViewContainer mLoadMoreListViewContainer;
private Button mButtonCanteen;
private Button mButtonScan;
private ListView mListView;
private int mCanteenNo;
private String mCanteenName;
private int mPageNumber;
private int mTotalCount;
private OrderExAdapter mAdapter;
private List<OrderEx> mOrderExs;
private SparseArray<OrderItemEx[]> mOrderItemExs;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_scan, container, false);
setTitleText(view, R.string.scan);

findView(view);
mOrderExs = new ArrayList<OrderEx>();
mOrderItemExs = new SparseArray<OrderItemEx[]>();
App app = (App)getActivity().getApplication();
Canteen canteen = app.getFirstCanteen();
if (canteen == null) {
mCanteenNo = -1;
mCanteenName = "";
} else {
mCanteenNo = canteen.No;
mCanteenName = canteen.Name;
}
mButtonCanteen.setText(mCanteenName);
mButtonCanteen.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getActivity(), CanteenSelectActivity.class);
intent.putExtra("CanteenNo", mCanteenNo);
startActivityForResult(intent, RequestCode.SELECT);
}

});
mButtonScan.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getActivity(), ScanActivity.class);
intent.putExtra("CanteenNo", mCanteenNo);
startActivityForResult(intent, RequestCode.SCAN);
}

});

mPtrClassicFrameLayout.setLastUpdateTimeRelateObject(this);
mPtrClassicFrameLayout.setPtrHandler(new PtrHandler() {
@Override
public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
return PtrDefaultHandler.checkContentCanBePulledDown(frame, mListView, header);
}

@Override
public void onRefreshBegin(PtrFrameLayout frame) {
mPageNumber = 1;
mOrderExs.clear();
mOrderItemExs.clear();
loadData();
}
});
LoadMoreFooterView footerView = new LoadMoreFooterView(getActivity());
mLoadMoreListViewContainer.setLoadMoreView(footerView);
mLoadMoreListViewContainer.setLoadMoreUIHandler(footerView);
mLoadMoreListViewContainer.setLoadMoreHandler(new LoadMoreHandler(){

@Override
public void onLoadMore(LoadMoreContainer loadMoreContainer) {
// TODO Auto-generated method stub
mLoadMoreListViewContainer.postDelayed(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
loadDataMore();
}

}, 1500);
}

});
loadData();

return view;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (requestCode == RequestCode.SELECT && resultCode == Activity.RESULT_OK) {
mCanteenNo = data.getIntExtra("CanteenNo", -1);
mCanteenName = data.getStringExtra("CanteenName");
mButtonCanteen.setText(mCanteenName);
loadData();
} else if (requestCode == RequestCode.SCAN && resultCode == Activity.RESULT_OK) {
loadData();
}
}

@Override
public void onHandle(int what, Object obj) {
// TODO Auto-generated method stub
switch (what) {
case R.id.msg_load:
mPtrClassicFrameLayout.refreshComplete();
mLoadMoreListViewContainer.loadMoreFinish(mOrderExs.size() == 0, mTotalCount > mOrderExs.size());
showData(false);
break;
case R.id.msg_load_more:
mLoadMoreListViewContainer.loadMoreFinish((Integer)obj == 0, mTotalCount > mOrderExs.size());
showData(true);
break;
case R.id.msg_network_disconnect:
mPtrClassicFrameLayout.refreshComplete();
mLoadMoreListViewContainer.loadMoreFinish(true, true);
showAlertDialog(R.string.please_check_network_connection);
break;
case R.id.msg_network_error:
mPtrClassicFrameLayout.refreshComplete();
mLoadMoreListViewContainer.loadMoreFinish(true, true);
showAlertDialog((String)obj);
break;
}
}

private void findView(View view) {
mButtonCanteen = (Button) view.findViewById(R.id.btn_canteen);
mButtonScan = (Button) view.findViewById(R.id.btn_scan);
mLoadMoreListViewContainer = (LoadMoreListViewContainer) view.findViewById(R.id.lmlvc);
mPtrClassicFrameLayout = (PtrClassicFrameLayout) view.findViewById(R.id.pcfl);
mListView = (ListView) view.findViewById(R.id.lv);
}

private void loadData() {
new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
App app = (App)getActivity().getApplication();
Seller seller = app.getSeller();

ApiOrder apiOrder = new ApiOrder();
ApiOrderItem apiOrderItem = new ApiOrderItem();
try {
mOrderExs = new ArrayList<OrderEx>();
mOrderItemExs = new SparseArray<OrderItemEx[]>();
mPageNumber = 1;
mTotalCount = apiOrder.getCount(seller.UserAccount, mCanteenNo);
OrderEx[] listOrderEx = apiOrder.getPagedList(seller.UserAccount, mCanteenNo, PAGE_SIZE, mPageNumber);

for (OrderEx modelOrderEx : listOrderEx) {
mOrderExs.add(modelOrderEx);
OrderItemEx[] listOrderItemEx = apiOrderItem.getListByOrder(modelOrderEx.No);
mOrderItemExs.put(modelOrderEx.No, listOrderItemEx);
}

sendMessage(R.id.msg_load);
} catch (IOException ex) {
sendMessage(R.id.msg_network_disconnect);
} catch (ApiException ex) {
sendMessage(R.id.msg_network_error, ex.getMessage());
}
}

}).start();
}

private void loadDataMore() {
new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
App app = (App)getActivity().getApplication();
Seller seller = app.getSeller();

ApiOrder apiOrder = new ApiOrder();
ApiOrderItem apiOrderItem = new ApiOrderItem();
try {
mPageNumber++;
mTotalCount = apiOrder.getCount(seller.UserAccount, mCanteenNo);
OrderEx[] listOrderEx = apiOrder.getPagedList(seller.UserAccount, mCanteenNo, PAGE_SIZE, mPageNumber);
for (OrderEx modelOrderEx : listOrderEx) {
mOrderExs.add(modelOrderEx);
OrderItemEx[] listOrderItemEx = apiOrderItem.getListByOrder(modelOrderEx.No);
mOrderItemExs.put(modelOrderEx.No, listOrderItemEx);
}

sendMessage(R.id.msg_load_more, listOrderEx.length);
} catch (IOException ex) {
sendMessage(R.id.msg_network_disconnect);
} catch (ApiException ex) {
sendMessage(R.id.msg_network_error, ex.getMessage());
}
}

}).start();
}

private void showData(boolean append) {
if (append) {
mAdapter.notifyDataSetChanged();
} else {
mAdapter = new OrderExAdapter(getActivity(), mOrderExs, mOrderItemExs);
mListView.setAdapter(mAdapter);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 微信