下拉加载数据 模拟 小实例
来源:互联网 发布:vmware esxi mac os 编辑:程序博客网 时间:2024/06/08 08:37
product_item_layout.xml
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView2_name" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:id="@+id/textView3_price" /></LinearLayout>
——————————————————————————————————————————————
布局文件loading.xml
<ProgressBar style="?android:attr/progressBarStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:id="@+id/progressBar" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="正在玩命加载中..." android:id="@+id/textView2" /></LinearLayout>
————————————————————————————————————————————————
创建product类
public class Product { private String name; private float price; public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; }}
Main6Activityd代码:
public class Main6Activity extendsAppCompatActivity implements AbsListView.OnScrollListener{ private ListView listView_product; private Vector<Product> products = new Vector<>(); private ProductAdapter pa; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main6); listView_product = (ListView) findViewById(R.id.listView_product); listView_product.setOnScrollListener(this); //给ListView添加底部视图 View footerView =LayoutInflater.from(this).inflate(R.layout.loading,null); listView_product.addFooterView(footerView); initData(); pa = new ProductAdapter(this,products); listView_product.setAdapter(pa); } private int count = 1;//用于产品记数器 //初始化数据 private void initData(){ for (int i=0;i<10;i++){ Product p = new Product(); p.setName("product name "+count); p.setPrice(10+count); count++; products.add(p); } } private int visibleLastIndex = 0; //在界面上可见的最后一个选项 @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(scrollState== AbsListView.OnScrollListener.SCROLL_STATE_IDLE &&visibleLastIndex==pa.getCount()){ System.out.println(visibleLastIndex); System.out.println(pa.getCount()); new Thread(new LoadDataThread()).start(); } } @Override public void onScroll(AbsListView view, intfirstVisibleItem, int visibleItemCount, int totalItemCount) { visibleLastIndex = firstVisibleItem+visibleItemCount-1; } private static final int UPDATE_DATA = 0x1; //更新数据的标记 //消息处理器 private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ //子线程中发送消息使用的标记就是用what属性存储 case UPDATE_DATA: //通知适配器数据集已经发生变化,那么ListView会重新加载数据 pa.notifyDataSetChanged(); break; } } }; /** * 模拟异步加载数据的线程 */ class LoadDataThread implements Runnable{ @Override public void run() { initData(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //消息对象就是一个Message对象 //发送一个空消息(空消息不是指消息对象是空,而是指消息对象只有一个标记,没有其它数据) handler.sendEmptyMessage(UPDATE_DATA); } } /** * 产品列表适配器 */ private static class ProductAdapter extends BaseAdapter{ private Context context; private Vector<Product> products; public ProductAdapter(Context context,Vector<Product> products){ this.context = context; this.products = products; } @Override public int getCount() { return products.size(); } @Override public Object getItem(int position) { return products.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, ViewconvertView, ViewGroup parent) { if(convertView==null){ convertView =LayoutInflater.from(context).inflate(R.layout.product_item_layout,null); } TextView tv_name = (TextView)ViewHolder.getView(convertView,R.id.textView2_name); TextView tv_price = (TextView)ViewHolder.getView(convertView,R.id.textView3_price); Product p = products.get(position); tv_name.setText(p.getName()); tv_price.setText(String.valueOf(p.getPrice())); return convertView; } }}
0 0
- 下拉加载数据 模拟 小实例
- 页面下拉加载数据
- 页面下拉加载数据
- js 下拉底部加载|滑轮滚动到页面底部ajax加载数据的实例
- listView下拉刷新加载数据
- listView下拉刷新加载数据
- listview 下拉刷新加载数据
- listView下拉刷新加载数据
- 定义LIstView下拉加载数据
- jsp下拉加载更多数据
- 小程序 使用view实现下拉刷新,上拉加载数据
- 加载数据小案例
- 瀑布流加载(数据模拟)
- swing之滚动条下拉加载数据
- 有关jquery.infinitescroll.js下拉加载数据
- IOS控件 Tableview 下拉刷新,加载数据
- listView下拉刷新加载数据详解
- Jquery autocomplete 异步加载下拉数据
- Android 接口使用
- Filter体现职责链模式
- memcache搜索分页
- Codeforces Round #324 (Div. 2) (B排列组合)(C贪心)(D哥德巴赫猜想 数论+暴力)
- Spring BeanNameAutoProxyCreator 与 ProxyFactoryBean区别
- 下拉加载数据 模拟 小实例
- Activity基本介绍
- Table表格
- TabLayout的使用
- Android SlidingMenu 使用详解
- 逆序输出字符串
- Binary Tree Zigzag Level Order Traversal
- jenkins通过svn发布maven项目
- Java 递归求斐波那契数,输入n,查询第n个数