- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《《android__listview_item》.doc
ListView 和 Adapter 的基础
工作原理:
ListView 针对List中每个item,要求 adapter “给我一个视图” (getView)。
一个新的视图被返回并显示
如果我们有上亿个项目要显示怎么办?为每个项目创建一个新视图?NO!这不可能!
实际上Android为你缓存了视图。
Android中有个叫做Recycler的构件,下图是他的工作原理:
如果你有10亿个项目(item),其中只有可见的项目存在内存中,其他的在Recycler中。
ListView先请求一个type1视图(getView)然后请求其他可见的项目。convertView在getView中是空(null)的。
当item1滚出屏幕,并且一个新的项目从屏幕低端上来时,ListView再请求一个type1视图。convertView此时不是空值了,它的值是item1。你只需设定新的数据然后返回convertView,不必重新创建一个视图。
请看下面的示例代码,这里在getView中使用了System.out进行输出
view source
print?
01 public class MultipleItemsList extends ListActivity {
02 ???
03 ????private MyCustomAdapter mAdapter;
04 ???
05 ????@Override
06 ????public void onCreate(Bundle savedInstanceState) {
07 ????????super.onCreate(savedInstanceState);
08 ????????mAdapter = new MyCustomAdapter();
09 ????????for (int i = 0; i < 50; i++) {
10 ????????????mAdapter.addItem("item " + i);
11 ????????}
12 ????????setListAdapter(mAdapter);
13 ????}
14 ???
15 ????private class MyCustomAdapter extends BaseAdapter {
16 ???
17 ????????private ArrayList mData = new ArrayList();
18 ????????private LayoutInflater mInflater;
19 ???
20 ????????public MyCustomAdapter() {
21 ????????????mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
22 ????????}
23 ???
24 ????????public void addItem(final String item) {
25 ????????????mData.add(item);
26 ????????????notifyDataSetChanged();
27 ????????}
28 ???
29 ????????@Override
30 ????????public int getCount() {
31 ????????????return mData.size();
32 ????????}
33 ???
34 ????????@Override
35 ????????public String getItem(int position) {
36 ????????????return mData.get(position);
37 ????????}
38 ???
39 ????????@Override
40 ????????public long getItemId(int position) {
41 ????????????return position;
42 ????????}
43 ???
44 ????????@Override
45 ????????public View getView(int position, View convertView, ViewGroup parent) {
46 ????????????System.o
您可能关注的文档
- 《《6341.玩转iPhone4》.pdf
- 《《65fsb-32l氟塑料合金离心泵》.pdf
- 《《6959 数据集成平台如何帮助IT机构降低成本》.pdf
- 《《6江西省十大战略性新兴产业(金属新材料)发展规划》.doc
- 《《7.5kw卧式离心泵》.pdf
- 《《7008-HR管理如何从传统形态转变到SHRM模式》.doc
- 《《70则HR管理精粹》.doc
- 《《75tswa卧式多级离心泵》.pdf
- 《《78_Connect to the iSCSI targets by GlobalSAN iSCSI initiator on Mac OS》.docx
- 《《7_ Inverter operated induction machines》.pdf
文档评论(0)