ListView 优化及分页加载
来源:互联网 发布:360禁止软件安装 编辑:程序博客网 时间:2024/05/09 09:41
1、复用convertView
// list数据适配器 public class SwitchsAdapter extends BaseAdapter { @Override public int getCount() { return devlist.size(); } @Override public Object getItem(int position) { return devlist.get(position); } @Override public long getItemId(int position) { return -1; } @Override public View getView(int position, View converView, ViewGroup parent) { View view = converView; Holder holder = null; if (view != null) { holder = (Holder) view.getTag(); } else { view = View.inflate(DeviceSwitchActivity.this, R.layout.item_dev_switch_click, null); holder = new Holder(view); view.setTag(holder); } // 防止checkBox,toggleBtn滑动重复显示 holder.tgBtn1.setTag(position); holder.tgBtn2.setTag(position); holder.tgBtn3.setTag(position); return view; }优化二:缓存item条目的引用——ViewHolder class Holder { @Bind(R.id.tv_switch_devSite) TextView tvDevSite; @Bind(R.id.tv_switch_devtypeName) TextView tvDevName; @Bind(R.id.tg_btn1) ToggleButton tgBtn1; @Bind(R.id.tg_btn2) ToggleButton tgBtn2; public Holder(View view) { ButterKnife.bind(this, view); } } }
2、防止checkBox,toggleBtn滑动重复显示
case 1: //加载一路开关,其它几路也要设置属性 holder.tgBtn1.setVisibility(View.VISIBLE); holder.tgBtn2.setVisibility(View.GONE); holder.tgBtn3.setVisibility(View.GONE); holder.tgBtn4.setVisibility(View.GONE); holder.sbLight.setVisibility(View.GONE);
3、分页加载
private final class MyOnScrollListener implements OnScrollListener { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { final int totalCount = firstVisibleItem + visibleItemCount; // firstVisibleItem当前页的第一项位置 // totalCount // 当前页的最后一项位置 if (totalCount == totalItemCount) { // 当前这一页加载完成,等待加载下一页 if (loadState == LOAD_STATE_IDLE) { loadState = LOAD_STATE_LOADING; new Thread() { public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } int count = deviceAdpter.getCount(); // 获取deviceAdpter中的数据总数 int dataIndex = 0; // 要加载的数据的index List<Device> result = new ArrayList<Device>(); for (dataIndex = count; dataIndex < Math.min(count + EACH_COUNT, LIST_COUNT); dataIndex++) { Device devdto = gvlistAll.get(dataIndex); result.add(devdto); } if (dataIndex <= LIST_COUNT) { Message msg = new Message(); msg.what = 0x008; msg.obj = result; handler.sendMessage(msg); } if (dataIndex == LIST_COUNT) { loadState = LOAD_STATE_FINISH; } else { loadState = LOAD_STATE_IDLE; // list未加载完,待续 } }; }.start(); } } } }
case 0x008: @SuppressWarnings("unchecked") ArrayList<Device> result = ((ArrayList<Device>) msg.obj); devlist.addAll(result); deviceAdpter.notifyDataSetChanged(); break;
0 0
- ListView 优化及分页加载
- Listview优化——分页加载
- ListView优化、图片缓存、分页加载(二)
- listview的优化及分页算法
- ListView分页加载
- listview分页加载
- listview分页加载问题
- ListView的分页加载
- ListView分页加载数据
- ListView 分页加载
- Android ListView 分页加载
- listview分页加载
- ListView分页加载数据
- listView分页加载数据
- listView 分页加载数据
- ListView分页加载数据
- listview分页加载!!!
- Listview分页加载
- 排序算法比较和总结
- Unix网络编程读书笔记(七)
- edittext 控制行数
- P1816 统计数字
- 拓扑排序
- ListView 优化及分页加载
- UVA 10698 Yet another Number Sequence 矩阵快速幂
- 【观点】从0搭建一个用户成长体系,你需要知道的都在这了
- Snooy 类 网页抓取
- LeetCode 52 N-Queens II (DFS)
- 经管院的一些MooC集锦(动态更新)
- Catalan数基础及应用
- Android N 拍照
- 集合