Android中的分頁載入

來源:互聯網
上載者:User

標籤:

//----------------------MainActivity中---------------------------------------------------

package com.example.fenye;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
    //每次載入的數量
    private final int PAGE_NUMBER=15;
    //index第幾條目
    private int index=0;
    
    private List<String> list=new ArrayList<String>();

    private ListView listview;
    private MyAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控制項Listview
        listview = (ListView) findViewById(R.id.listview);
        
        //設定Listview的滾動監聽
        listview.setOnScrollListener(new OnScrollListener() {
            
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {
                //判斷如果滾動停止時
                if (scrollState==OnScrollListener.SCROLL_STATE_IDLE) {
                    //如果滾到到了最下面一行
                    if (view.getLastVisiblePosition()==list.size()-1) {
                        //從新賦值
                        index=index+PAGE_NUMBER;
                        //多士提醒
                        Toast.makeText(MainActivity.this, "載入中...", 0).show();
                        //重新載入資料
                        getData();
                    }
                }
                
            }
            
            @Override
            public void onScroll(AbsListView view, int firstVisibleItem,
                    int visibleItemCount, int totalItemCount) {
                
                
            }
        });
        
        //載入資料
        getData();
        
    }

    //載入資料
    private void getData() {
        new Thread(){
            public void run() {
                //index第幾條目
                for (int i = index; i < index+PAGE_NUMBER; i++) {
                    list.add("我是條目"+i);
                }
            };
        }.start();
        
        //每次載入的數量
        try {
            //延遲1秒
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //若果適配器為空白,就建立適配器
        if (adapter==null) {
            adapter = new MyAdapter(list, this);
            listview.setAdapter(adapter);
        }else{
            //重新整理適配器
            adapter.notifyDataSetChanged();
        }
        
    }


    
    
}

 

//------------------------main.xml布局檔案中-----------------------------

 <ListView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/listview"></ListView>

//-------------------適配器----建立一個類繼承----BaseAdapter---------------------------------------------

package com.example.fenye;

import java.util.List;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter{
    private List<String> list;
    private Context context;
    

    public MyAdapter(List<String> list, Context context) {
        super();
        this.list = list;
        this.context = context;
    }

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

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView==null) {
            convertView=View.inflate(context, R.layout.list_item, null);
            
        }
        TextView tv_name=(TextView) convertView.findViewById(R.id.tv_name);
        tv_name.setText(list.get(position));
        
        return convertView;
    }

}

 

 

//-----------------list_item.xml布局檔案中-----------------------------------------

 <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"/>
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv_name"/>

 

 

 

//================以上是自動載入===========================================

//==============下面做一下手動載入=====只需要在=onCreate的方法中修改一下,如下:=================

/*
 * 手動載入在Listview中用到listview.addFooterView(view),把button添加到Listview的最下面,
 * 點擊時,重新賦值和重新載入資料
 */

 

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


        //找到控制項Listview
        listview = (ListView) findViewById(R.id.listview);


        //找到button的布局
        View view=getLayoutInflater().inflate(R.layout.button_footer, null);
        //把控制項button添加到Listview的下面
        listview.addFooterView(view);
        Button button=(Button) view.findViewById(R.id.button);
                                    
        //載入資料
        getData();
        button.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                //重新賦值
                index=index+PAGE_NUMBER;
                //多士提示
                Toast.makeText(MainActivity.this, "載入中...", 0).show();
                //載入資料
                getData();
                
            }
        });
        
    }

//---------------button_footer.xml布局檔案中------------------

<Button android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:text="點擊載入"/>

Android中的分頁載入

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.