zoukankan      html  css  js  c++  java
  • 【ListView】滚动且加载数据

    public class ListBaseAdapter extends BaseAdapter {
        
        private Context context;
        private ArrayList<String> list;
        public int count = 30;
        
        public ListBaseAdapter (Context context, ArrayList<String> list ) {
            this.context = context;
            this.list = list;
             
        }
        @Override
        public int getCount() {
            return count;
        }
        @Override
        public Object getItem(int item) {
            return item;
        }
        @Override
        public long getItemId(int id) {
            return id;
        }
        @Override
        public View getView(int arg0, View view, ViewGroup arg2) {
            ViewHolder viewHolder;
            if (view == null) {
                viewHolder = new ViewHolder();
                view = View.inflate(context, R.layout.activity_main_item, null);
                viewHolder.tv = (TextView) view.findViewById(R.id.tv_01);
                view.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) view.getTag();  
            }
            viewHolder.tv.setText(list.get(arg0)+"");
            return view;
        }
        private class ViewHolder{
            TextView tv;
        }
    
    }
    View Code
    public class MainActivity extends Activity {
        
        private ListView lv;
        private ArrayList<String> list;
        private int lastitem = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            lv = (ListView) this.findViewById(R.id.listview01);
            
            loadData(); 
            
            final ListBaseAdapter listAdapter = new ListBaseAdapter(MainActivity.this, list);
            lv.setAdapter(listAdapter);
            lv.setOnScrollListener(new OnScrollListener() {
                @Override
                public void onScroll(AbsListView view, int firstVisibleItem,
                        int visibleItemCount, int totalItemCount) {
                    lastitem = totalItemCount;
                    //Log.i("QQQ", "lastitem.111.." + lastitem);
                }
                @Override
                public void onScrollStateChanged(AbsListView view, int scrollState) {
                    //Log.i("QQQ", "lastitem.222.." + lastitem);
                    if (lastitem != 100) {
                        if (lastitem == listAdapter.count
                                && scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
                            listAdapter.count += 10;
                            listAdapter.notifyDataSetChanged();
                        }
                    } else {
                        Toast.makeText(getApplicationContext(), "啦啦啦啦", 1).show();
                    }
                }
            });
        }
        
        private void loadData() {
            list = new ArrayList<String>();
            for (int i=0; i<100; i++) {
                list.add("张三"+i);
            }
            
        }
    
    
    }
    View Code
  • 相关阅读:
    yii中sphinx索引配置解析
    Java HashMap工作原理及实现?
    Spring AOP 实现原理与 CGLIB 应用
    Spring 容器AOP的实现原理——动态代理
    代理模式(静态代理)
    Java中的字符串常量池
    JAVA对象的深度克隆
    重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
    访问修饰符public,private,protected和default的区别?
    Java中的字符串常量池?
  • 原文地址:https://www.cnblogs.com/androidsj/p/3115585.html
Copyright © 2011-2022 走看看