Pagerstwich tab样式加下拉刷新(三)

例子和上面的两个是同一个,这次主要是activity的代码

这段代码主要实现每个list_item格式相同,不同的有点不一样

public class MyOrderActivity extends BaseActivity implements PagerSwitchListener, ErrorClickListener ,OnPageChangeListener , IXListViewListener{

	@InjectView(id = R.id.back1)
	private ImageButton back;
	
	@InjectView(id = R.id.pagerSwitch)
	private PagerSwitch pagerSwitch;
	
	private String[] titleNames = new String[]{"待付款" , "已付款" , "待评价" ,"待接收"};
	private int[] pages = new int[]{1,1,1,1};
	
	@InjectView(id = R.id.myorder_viewpager)
	private ViewPager myorder_viewpager;
	
	private List<View> pager;
	private List<XListView> lists;
	private List<LoadView> loadViews;
	private List<MyorderAdapter> adapters;
	
	
	private List<MyorderInfo> firstList;
	private List<MyorderInfo> secondList;
	private List<MyorderInfo> thirdList;
	private List<MyorderInfo> fourList;      //前面model好像粘贴错了,,,懂就好,,,一点点差别
	
	private int testNum = 1;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.my_order);
		pagerSwitch.init(titleNames);
		pagerSwitch.setSelect(0);
		pagerSwitch.setPagerSwitchListener(this);
		
		initPager();                                        
		loadListFromLoadView(0);
		loadListFromLoadView(1);
		loadListFromLoadView(2);
		loadListFromLoadView(3);
	}
	private void initPager() {
		// TODO Auto-generated method stub
		pager = new ArrayList<View>(4);
		lists = new ArrayList<XListView>(4);
		loadViews = new ArrayList<LoadView>(4);
		adapters = new ArrayList<MyorderAdapter>(3);
		
		firstList = new ArrayList<MyorderInfo>();
		secondList = new ArrayList<MyorderInfo>();
		thirdList = new ArrayList<MyorderInfo>();
		fourList = new ArrayList<MyorderInfo>();
		
		View pager1 = LayoutInflater.from(this).inflate(R.layout.common_list, null);
		XListView list1 = (XListView)pager1.findViewById(R.id.xlistView);
		LoadView loadView1 = (LoadView)pager1.findViewById(R.id.loadView);
		loadView1.setErrorClickListener(this);                                          //public Interface ErrorClicklistener{
		MyorderAdapter adapters1 = new MyorderAdapter(this,firstList);                  //     public reload(int type);                           
		list1.setAdapter(adapters1, 0);                                                 //}
		list1.setXListViewListener(this);
		lists.add(list1);
		loadViews.add(loadView1);
		adapters.add(adapters1);
		pager.add(pager1);
		
		View pager2 = LayoutInflater.from(this).inflate(R.layout.common_list, null);
		XListView list2 = (XListView)pager2.findViewById(R.id.xlistView);
		LoadView loadView2 = (LoadView)pager2.findViewById(R.id.loadView);
		loadView2.setErrorClickListener(this);
		MyorderAdapter adapters2 = new MyorderAdapter(this,secondList);
		list2.setAdapter(adapters2, 1);
		list2.setXListViewListener(this);
		lists.add(list2);
		loadViews.add(loadView2);
		adapters.add(adapters2);
		pager.add(pager2);
		
		View pager3 = LayoutInflater.from(this).inflate(R.layout.common_list, null);
		XListView list3 = (XListView)pager3.findViewById(R.id.xlistView);
		LoadView loadView3 = (LoadView)pager3.findViewById(R.id.loadView);
		loadView3.setErrorClickListener(this);
		MyorderAdapter adapters3 = new MyorderAdapter(this,thirdList);
		list3.setAdapter(adapters3, 2);
		list3.setXListViewListener(this);
		lists.add(list3);
		loadViews.add(loadView3);
		adapters.add(adapters3);
		pager.add(pager3);
		
		View pager4 = LayoutInflater.from(this).inflate(R.layout.common_list, null);
		XListView list4 = (XListView)pager4.findViewById(R.id.xlistView);
		LoadView loadView4 = (LoadView)pager4.findViewById(R.id.loadView);
		loadView4.setErrorClickListener(this);
		MyorderAdapter adapters4 = new MyorderAdapter(this , fourList);
		list4.setAdapter(adapters4, 3);
		list4.setXListViewListener(this);
		lists.add(list4);
		loadViews.add(loadView4);
		adapters.add(adapters4);
		pager.add(pager4);
		
		myorder_viewpager.setAdapter(new ListPagerAdapter(pager));
		myorder_viewpager.setOnPageChangeListener(this);
	}
	private void loadListFromLoadView(final int position) {
		lists.get(position).setPullLoadEnable(false);
		lists.get(position).setPullRefreshEnable(false);
		loadViews.get(position).startLoad();
        baseHandler.postDelayed(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				if (testNum == 1) {
					if(position == 0){
						firstList.addAll(MyorderInfo.getTest());
					}
					else if(position == 1){
						secondList.addAll(MyorderInfo.getTest());
					}
					else if(position == 2){
						thirdList.addAll(MyorderInfo.getTest());
					}else
					{
						fourList.addAll(MyorderReceiveInfo.getTest());
					}
					
					
					
					
					
					if(position ==3)
					{
						adapters4.notifyDataSetChanged();
					}
					else
				    {
						adapters.get(position).notifyDataSetChanged();
				    }
				    
					
					loadViews.get(position).loadDone();

					lists.get(position).setPullLoadEnable(true);
					lists.get(position).setPullRefreshEnable(true);
				} else {
					loadViews.get(position).loadError(position);
					testNum++;
				}

			}
		}, 1000);
	}

	private void loadList(final int position , final boolean isLoadMore) {
		if (isLoadMore) {
			lists.get(position).setPullRefreshEnable(false);
		} else {
			lists.get(position).setPullLoadEnable(false);
		}

		baseHandler.postDelayed(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				if(position == 0){
					firstList.addAll(MyorderInfo.getTest());
				}
				else if(position == 1){
					secondList.addAll(MyorderInfo.getTest());
				}else if(position == 2){
					thirdList.addAll(MyorderInfo.getTest());
				}else
				{
					fourList.addAll(MyorderReceiveInfo.getTest());
				}
				
				if(position ==3)
				{
					adapters4.notifyDataSetChanged();
				}
				else
			    {
					adapters.get(position).notifyDataSetChanged();
			    }

				lists.get(position).stopLoadMore();
				lists.get(position).stopRefresh();
				if (isLoadMore) {
					lists.get(position).setPullRefreshEnable(true);
				} else {
					lists.get(position).setPullLoadEnable(true);
				}
			}
		}, 1000);
	}
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		
		case R.id.back1:
			AppManager.getAppManager().finishActivity();
			break;
		default:
			break;
		}
	}

	@Override
	public void onRefresh(int type) {                                               //为了区分每一个选项下的List
		// TODO Auto-generated method stub
		pages[type] = 1;
		if(type == 0){
			firstList.clear();
		}else if(type == 1){
			secondList.clear();
		}else if(type == 2){
			thirdList.clear();
		}else
		{
			fourList.clear();
			
		}
		if(type ==3)
		{
			adapters4.notifyDataSetChanged();
		}
		else
	    {
			adapters.get(type).notifyDataSetChanged();
	    }
	    
		loadList(type , false);
		lists.get(type).setRefreshTime(StringUtil.getNowTime());
	}

	@Override
	public void onLoadMore(int type) {
		// TODO Auto-generated method stub
		pages[type] ++;
        loadList(type , true);
	}

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

	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onPageSelected(int arg0) {
		// TODO Auto-generated method stub
		pagerSwitch.setSelect(arg0);                      //
	}

	@Override
	public void reload(int type) {                            //ErrorClickListener中实现的方法
		// TODO Auto-generated method stub
		loadListFromLoadView(type);
	}

	@Override
	public void pagerChanged(int position) {                  //PagerSwitchListener中实现的方法
		// TODO Auto-generated method stub
		myorder_viewpager.setCurrentItem(position, true);
	}

	@Override
	protected void initView() {
		// TODO Auto-generated method stub
		
	}

	@Override
	protected void setOnClickListener() {
		// TODO Auto-generated method stub
		back.setOnClickListener(this);
	}

	@Override
	protected void refresh(Object... param) {
		// TODO Auto-generated method stub
		
	}

}

 


R.layout.common_list布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <com.driving.client.widget.xlistView.XListView
        android:id="@+id/xlistView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:cacheColorHint="@android:color/transparent"
        android:divider="#00000000"
        android:clickable="false"
        android:listSelector="@android:color/transparent" >
    </com.driving.client.widget.xlistView.XListView>
	    
	    <com.driving.client.widget.LoadView 
       		android:id="@+id/loadView"
       		android:layout_height="fill_parent"
       		android:layout_width="fill_parent"
       ></com.driving.client.widget.LoadView>

</RelativeLayout>



最后我把XListView实现的类通过文件传上去。以及其中的一些类。。




原文地址:https://www.cnblogs.com/peterleee/p/9373787.html