安卓开发之ListView
来源:互联网 发布:域名跟网址的区别 编辑:程序博客网 时间:2024/06/01 11:39
该控件类似于我们iOS中的tableview,那么它需要cell(自定义item),model(Adapter自定义),
cell例子写法--
public class Animal { private String aName; private String aSpeak; private int aIcon; public Animal() { } public Animal(String aName, String aSpeak, int aIcon) { this.aName = aName; this.aSpeak = aSpeak; this.aIcon = aIcon; } public String getaName() { return aName; } public String getaSpeak() { return aSpeak; } public int getaIcon() { return aIcon; } public void setaName(String aName) { this.aName = aName; } public void setaSpeak(String aSpeak) { this.aSpeak = aSpeak; } public void setaIcon(int aIcon) { this.aIcon = aIcon; }}model写法
public class AnimalAdapter extends BaseAdapter { private LinkedList<Animal> mData; private Context mContext; public AnimalAdapter(LinkedList<Animal> mData, Context mContext) { this.mData = mData; this.mContext = mContext; } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(mContext).inflate(R.layout.item_list_animal,parent,false); ImageView img_icon = (ImageView) convertView.findViewById(R.id.img_icon); TextView txt_aName = (TextView) convertView.findViewById(R.id.txt_aName); TextView txt_aSpeak = (TextView) convertView.findViewById(R.id.txt_aSpeak); img_icon.setBackgroundResource(mData.get(position).getaIcon()); txt_aName.setText(mData.get(position).getaName()); txt_aSpeak.setText(mData.get(position).getaSpeak()); return convertView; }}
最后是controller--mainactivity
最后是MainActivity.java:
public class MainActivity extends AppCompatActivity { private List<Animal> mData = null; private Context mContext; private AnimalAdapter mAdapter = null; private ListView list_animal; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = MainActivity.this; list_animal = (ListView) findViewById(R.id.list_animal); mData = new LinkedList<Animal>(); mData.add(new Animal("狗说", "你是狗么?", R.mipmap.ic_icon_dog)); mData.add(new Animal("牛说", "你是牛么?", R.mipmap.ic_icon_cow)); mData.add(new Animal("鸭说", "你是鸭么?", R.mipmap.ic_icon_duck)); mData.add(new Animal("鱼说", "你是鱼么?", R.mipmap.ic_icon_fish)); mData.add(new Animal("马说", "你是马么?", R.mipmap.ic_icon_horse)); mAdapter = new AnimalAdapter((LinkedList<Animal>) mData, mContext); list_animal.setAdapter(mAdapter); }}表头表尾分割线的设置:
listview作为一个列表控件,他和普通的列表一样,可以自己设置表头与表尾: 以及分割线,可供我们设置的属性如下:
- footerDividersEnabled:是否在footerView(表尾)前绘制一个分隔条,默认为true
- headerDividersEnabled:是否在headerView(表头)前绘制一个分隔条,默认为true
- divider:设置分隔条,可以用颜色分割,也可以用drawable资源分割
- dividerHeight:设置分隔条的高度
翻遍了了API发现并没有可以直接设置ListView表头或者表尾的属性,只能在Java中写代码 进行设置了,可供我们调用的方法如下:
- addHeaderView(View v):添加headView(表头),括号中的参数是一个View对象
- addFooterView(View v):添加footerView(表尾),括号中的参数是一个View对象
- addHeaderView(headView, null, false):和前面的区别:设置Header是否可以被选中
- addFooterView(View,view,false):同上
对了,使用这个addHeaderView方法必须放在listview.setAdapter前面,否则会报错。
//添加表头和表尾需要写在setAdapter方法调用之前!!! list_animal.addHeaderView(headView); list_animal.addFooterView(footView);
阅读全文
0 0
- 安卓开发之ListView
- 安卓开发之ListView优化方案
- 安卓开发之listView优化篇
- 安卓开发之基于ListActivity的LIstView的用法
- 安卓控件之ListView
- 安卓基础之ListView
- 安卓开发13:ListView详细解读
- 安卓开发-ListView的使用
- 安卓开发去掉listview点击效果
- 安卓开发:ListView简单入门
- 安卓开发学习心得-------ListView基础
- 安卓开发ListView的运用
- 安卓开发学习笔记(1):ListView
- 安卓开发,listView相关(一),简介
- 安卓开发,listView相关(二),适配器
- 安卓UI组件之ListView详解
- 安卓入门学习之ListView
- 2015.5.13安卓笔记之listview
- MyBatis学习总结(六)——调用存储过程
- 2017.10.19总结
- C++循环队列
- 约瑟夫环时间复杂度O(n)解法
- java网络编程—Reactor
- 安卓开发之ListView
- 04-树4 是否同一棵二叉搜索树(25 分)
- jdbc:oracle:thin:@ip:1521:orcl(详解)
- C++链栈 及 链队列
- 二分查找 6不6(Java实现)
- Java集合框架01-Collection架构与源码分析
- Java Web
- UTF-8简介
- L5 详解Linux系统目录结构,文件类型,ls命令,alias命令