[轉]ListView滾動到底部自動載入資料

來源:互聯網
上載者:User

標籤:

轉自:http://blog.csdn.net/shineflowers/article/details/41744241

在Android中有很多時候會選擇用ListView載入資料,有的是分批載入,比如每次載入20條,100條就要載入5次,如果一次性載入100條,ListView載入就會變慢,如果是有圖片的話,一是浪費流量,二是item中帶圖片會出現錯位的問題l,ListView載入資料目前好多App的做法

1. 分批載入,滑動到底部自動更新

2. 滑動到底部,手動的點擊載入更多

3. 下拉重新整理 + 底部載入更多

今天實現ListView滑動到底部自動更新的效果。

原理:監聽ListView的滑動事件,判斷ListView是否滑動到底部,然後去載入資料。

public class MainActivity extends Activity {    private ListView listview;    private List<String> datas;    private LayoutInflater inflater;    private MyAdapter adapter;    private List<String>  contents;    private int count = 0;    private View footView;    private Handler handler = new Handler();    int lastItem;    private RelativeLayout loading;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();        inflater = LayoutInflater.from(this);        listview = (ListView) findViewById(R.id.listview);        adapter = new MyAdapter();        footView = inflater.inflate(R.layout.footer, null);        loading = (RelativeLayout) footView.findViewById(R.id.loading);        //listview的addFooterView()添加view到listview底部一定要加在listview.setAdapter(adapter);這代碼前面        listview.addFooterView(footView);        listview.setAdapter(adapter);        //添加listview滾動監聽        listview.setOnScrollListener(new OnScrollListener() {            //AbsListView view 這個view對象就是listview            @Override            public void onScrollStateChanged(AbsListView view, int scrollState) {                if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {                    if (view.getLastVisiblePosition() == view.getCount() - 1) {                        loadData();                    }                }            }            @Override            public void onScroll(AbsListView view, int firstVisibleItem,                    int visibleItemCount, int totalItemCount) {                   lastItem = firstVisibleItem + visibleItemCount - 1 ;            }        });    }    protected void loadData() {        loading.setVisibility(View.VISIBLE);        handler.postDelayed(new Runnable() {            @Override            public void run() {                 load();                 loading.setVisibility(View.GONE);                 adapter.notifyDataSetChanged();            }        }, 5000);    }    protected void load() {        int count=adapter.getCount()+1;        for(int i=count;i<count+20;i++){             contents.add("載入資料:::"+i);        }    }    private void initData() {        contents = new ArrayList<String>();        for(int i=1;i<20;i++){            contents.add("載入資料:::"+i);        }    }        class MyAdapter extends BaseAdapter{        @Override        public int getCount() {            return contents.size();        }        @Override        public Object getItem(int position) {            return contents.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder holder;            if(convertView==null){                convertView = inflater.inflate(R.layout.item, parent, false);                holder = new ViewHolder();                holder.tvContent = (TextView) convertView.findViewById(R.id.tvContent);                convertView.setTag(holder);            }else{                holder = (ViewHolder) convertView.getTag();            }            holder.tvContent.setText(contents.get(position));            return convertView;        }        class ViewHolder{            TextView tvContent;        }    }}

 

[轉]ListView滾動到底部自動載入資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.