关于listView学习,以及相关知识点延伸
2013-08-13 21:01
295 查看
ListView是android中常见的控件之一,对于它的了解和应用也是需要掌握的。
ListView需要调用setAdapter(adapter)方法,通过adapter对象来连接数据和UI。Adapter对象负责把数据格式化,并与ListView绑定将数据提供给ListView显示,而ListView只负责控件的显示以及UI的交互事件的处理。
adapter中getView方法实现使用数据、并更新UI,如果数据量大,且属于耗时操作,那么可以事先使用多线程,Asynctask来读取数据,再getView更新UI。已避免产生ANR问题。
用手边教材的例子做示范。
结果显示如下表:
setAdapter()方法后,会调用getCount()方法,之后是getView方法。
对于adapter中一些方法,做一个简单介绍。
int getCount() 返回数据信息数据总数量。
Object getItem(intposition) 从数据信息中返回下标position的数据项;
Long getItemId(intposition) 从数据信息中得到下标position的数据项的ID;
View getView(intposition, View converView, ViewGroup parent)ListView 通过它传进啊View;
intgetViewtypedCount()返回ListView使用View数量,默认为1;
intgetItemViewType(int position)根据position获得对应item使用的View类型。
booleanisEnabled(int position)根据position 设置对应的Item是否可用(是否能否接收UI事件,这句不大理解)
_______________________________
在scrollview 下显示全部的listview内容,这个问题也可以换个思路,那就是在listView HeaderView 和 FooterView 添加 scrollView 中listView 之前之后的内容。这样,整个展示效果和设定 listView 高度效果一致。
/article/9154339.html
/article/3466356.html
http://www.doc88.com/p-772890172277.html
三篇结合一起看。
ListView需要调用setAdapter(adapter)方法,通过adapter对象来连接数据和UI。Adapter对象负责把数据格式化,并与ListView绑定将数据提供给ListView显示,而ListView只负责控件的显示以及UI的交互事件的处理。
adapter中getView方法实现使用数据、并更新UI,如果数据量大,且属于耗时操作,那么可以事先使用多线程,Asynctask来读取数据,再getView更新UI。已避免产生ANR问题。
用手边教材的例子做示范。
package com.example.ex_emptylisetview; import android.os.Bundle; import android.app.ListActivity; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class MainActivity extends ListActivity { private CheeseAdapter mAdapter; private static final String[] EM = {}; private static final String[] CH = { "asdf","qwe","tiu","fdhgfgh", "yhe", "werert", "sfsdfq" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mAdapter = new CheeseAdapter(CH); Log.d("onCreate", "madapter"); setListAdapter(mAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void onSetEmpty(View v) { mAdapter.changeData(EM); } public void onSetData(View v) { mAdapter.changeData(CH); } private class CheeseAdapter extends BaseAdapter { private String[] mData; private void changeData(String[] data) { mData = data; notifyDataSetChanged(); } public CheeseAdapter(String[] mData) { super(); this.mData = mData; } @Override public int getCount() { Log.d("getCount", "mData.length:"+mData.length); return mData.length; } @Override public String getItem(int position) { Log.d("getItem", "getItem"+position); return mData[position]; } @Override public long getItemId(int position) { Log.d("getItemId", "getItemId:"+position); return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { Log.d("getView", position+""); if(convertView ==null) { convertView = getLayoutInflater(). inflate(R.layout.text_item, parent, false); } ((TextView)convertView).setText(getItem(position)); return convertView; } } }
结果显示如下表:
setAdapter()方法后,会调用getCount()方法,之后是getView方法。
对于adapter中一些方法,做一个简单介绍。
int getCount() 返回数据信息数据总数量。
Object getItem(intposition) 从数据信息中返回下标position的数据项;
Long getItemId(intposition) 从数据信息中得到下标position的数据项的ID;
View getView(intposition, View converView, ViewGroup parent)ListView 通过它传进啊View;
intgetViewtypedCount()返回ListView使用View数量,默认为1;
intgetItemViewType(int position)根据position获得对应item使用的View类型。
booleanisEnabled(int position)根据position 设置对应的Item是否可用(是否能否接收UI事件,这句不大理解)
_______________________________
在scrollview 下显示全部的listview内容,这个问题也可以换个思路,那就是在listView HeaderView 和 FooterView 添加 scrollView 中listView 之前之后的内容。这样,整个展示效果和设定 listView 高度效果一致。
/article/9154339.html
/article/3466356.html
http://www.doc88.com/p-772890172277.html
三篇结合一起看。
<pre code_snippet_id="110283" snippet_file_name="blog_20131213_2_3683755">
相关文章推荐
- 关于Linux内核学习的误区以及相关书籍介绍
- 关于Linux内核学习的误区以及相关书籍介绍[zt]
- 关于Linux内核学习的误区以及相关书籍介绍
- 关于Linux内核学习的误区以及相关书籍介绍
- 关于数据挖掘的学习计划以及相关的准备
- 对C语言结构体知识点的学习以及复习相关基础知识
- Android adb命令学习笔记(一)——adb介绍以及关于传输文件等相关基本命令
- 关于Linux内核学习的误区以及相关书籍介绍
- 关于linux内核学习的误区以及相关书籍介绍
- 关于Linux内核学习的误区以及相关书籍介绍
- Unity学习日常问题记录九-关于Lookat与模型坐标系的相关的问题以及父子物体的刚体
- 关于深入学习以及Listview变体的研究
- 关于Linux内核学习的误区以及相关书籍介绍
- Angular关于$watch,$apply 以及 $digest的工作原理及相关知识点
- 死锁(ora-00060)以及死锁相关的知识点
- Spring.Net实现AOP以及AOP相关概念(学习笔记四)
- 关于神经网络学习的相关资源
- 一道练习题引申出来的知识点(六) ADO.NET常用命令 以及相关概念
- 【Python爬虫学习笔记(2)】正则表达式(re模块)相关知识点总结
- 关于Django学习中那些我以为很重要但是经常忘记的小知识点