ListView 分页加载

来源:互联网 发布:液压系统仿真软件 编辑:程序博客网 时间:2024/05/23 00:03
package com.example.lianxtapplication.fragment; /** * A simple {@link Fragment} subclass. */public class ListViewFragment extends Fragment implements View.OnClickListener, AbsListView.OnScrollListener {    private ListView lv;    private int mPageIndex = 1;    private int i3;    private Button ba;    private ProgressBar pr;    private SwipeRefreshLayout Swip;    private View footView1;    private ListViewAdapter2 listViewAdapter2;    private List<ListUser.ParamzBean.FeedsBean> list = new ArrayList<>();    private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            String st = (String) msg.obj;            Log.e("---", st);            Gson gson = new Gson();            ListUser listUser = gson.fromJson(st, ListUser.class);            list.addAll(listUser.getParamz().getFeeds());            //适配器刷新            listViewAdapter2.notifyDataSetChanged();            Swip.setRefreshing(false);        }    };    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        View inflate = inflater.inflate(R.layout.fragment_list_view, container, false);        initView(inflate);        initData();        initFootView();        initAdapter();        //下拉刷新        Swip.setProgressBackgroundColorSchemeResource(android.R.color.white);        // 设置下拉进度的主题颜色        Swip.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, R.color.colorPrimaryDark);        Swip.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                list.clear();                mPageIndex = 1;                initData();            }        });        return inflate;    }    private void initAdapter() {        listViewAdapter2 = new ListViewAdapter2(list, getActivity());        lv.addFooterView(footView1);        lv.setAdapter(listViewAdapter2);    }    //初始化底部试图    private void initFootView() {
        //在主页面里用
        //footView1 = getLayoutInflater().inflate(R.layout.item, null);
//获取地部控件 因为在fragment里面所以要加 getActivity()
 footView1 = getActivity().getLayoutInflater().inflate(R.layout.item, null);     
   //获取按钮id       
 ba = footView1.findViewById(R.id.basicaa);     
   //获取进度条的id       
  pr = footView1.findViewById(R.id.pr);     
    //按钮的点击事件      
  ba.setOnClickListener(this);   
 }  
  private void initData() { 
    
     new Thread(new Runnable() {      
      @Override           
    public void run() {              
      try {        
           
 String sendGet = MyOkHttp.getMyOkHttp().sendGet("http://litchiapi.jstv.com/api/GetFeeds?column=3&PageSize=10&pageIndex=" + mPageIndex + "&val=100511D3BE5301280E0992C73A9DEC41");     
               Message message = new Message();          
               message.obj = sendGet;                
               handler.sendMessage(message);              
  }       catch (IOException e) {                  
  e.printStackTrace();           
     }          
  }      
  }).start();    
}   
 
 private void initView(View inflate) {      
  Swip = (SwipeRefreshLayout) inflate.findViewById(R.id.Swip);        
    lv = (ListView) inflate.findViewById(R.id.lv);       
     lv.setOnScrollListener(this);   
 } 
   //点击监听   
 @Override  
  public void onClick(View view) {        
    switch (view.getId()) {         
     case R.id.basicaa:               
         //点击完显示加载进度条              
         pr.setVisibility(View.VISIBLE);             
         //将按钮隐藏                
        ba.setVisibility(View.GONE);              
         //变量增加              
         mPageIndex++;            
         //添加新数据              
         initData();           
         break;      
  }   
 } 
   //滑动状态监听    @Override  
  public void onScrollStateChanged(AbsListView absListView, int i) { 
       int count = listViewAdapter2.getCount();     
        if (i == 0 && count == i3) {        
        //滑动底部显示按钮          
         ba.setVisibility(View.VISIBLE);        
        //将加载进度条隐藏         
         pr.setVisibility(View.GONE);     
   }  
  } 
 
   //滑动时走的方法    
@Override  
  public void onScroll(AbsListView absListView, int i, int i1, int i2) { 
       i3 = i2 - 1;   
 }
}
//ListView分页加载的布局
<LinearLayout 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"    tools:context="com.example.lianxtapplication.fragment.ListViewFragment"    android:orientation="vertical"    >    <!-- TODO: Update blank fragment layout -->    <android.support.v4.widget.SwipeRefreshLayout        android:id="@+id/Swip"        android:layout_width="match_parent"        android:layout_height="match_parent">        <ListView            android:id="@+id/lv"            android:layout_width="match_parent"            android:layout_height="match_parent"></ListView>    </android.support.v4.widget.SwipeRefreshLayout></LinearLayout>
//Button 按钮 ,
ProgressBar 加载进度
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    ><Button    android:layout_width="match_parent"    android:layout_height="50dp"    android:id="@+id/basicaa"    android:text="点击加载"    />    <ProgressBar        android:visibility="gone"        android:layout_width="match_parent"        android:layout_height="50dp"        android:layout_gravity="center"        android:id="@+id/pr"        /></LinearLayout>

原创粉丝点击