ListVIEw在我们AndroID项目中的地位是有目共睹的,相信几乎每一个App中都有它的身影。
ListVIEw主要是用列表形式来加载数据,在特定情况下需要实现一些特殊功能:如刷新数据,加载数据,实现动画效果等。
作为我们常用的控件,有哪些需要注意的呢?
**为ListVIEw的每一Item设置分隔线
第一种方法:也是最简单地方法,在布局文件中设置ListVIEw的
divIDer属性
如:androID:divIDer=”@color/black”
第二种方法:设置androID:divIDer=”@null”表示不要分隔线,然后,自己在Item布局中添加分隔线。
<ListVIEw> androID:ID="@+ID/test_lv" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:divIDer="#d1d1d1"<!--设置分隔线颜色--> androID:divIDerHeight="1px"<!--设置分隔线高度--> > </ListVIEw>
** 默认情况下,ListVIEw的item有点击效果,怎么样改变这种效果呢?
设置ListVIEwr的androID:ListSelector属性,比如可以设置透明取消这种效果androID:ListSelector=”@androID:color/transparent”
也可以设置自己想要的效果,添加对应的color资源或drawble资源 就可以了。
** 当数据比较多的时候,ListVIEw在滚动时候会显示一个默认的滚动条,要取消这个滚动条的话,可以设置androID:scrollbars属性
如:androID:scrollbars=”none”
** ListVIEw性能优化,必用VIEwHolder来充分发挥ListVIEw的recycle机制
** ListVIEw中数据动态变化,添加或删除数据 *** 作,效果显而易见。
//实现ListVIEw数据添加删除public class MainActivity extends Activity implements VIEw.OnClickListener { private ListVIEw test_lv; private List<TestBean> dataList; private TestAdapter adapter; private button add_btn,del_btn; private ImageVIEw emptyIv; private linearLayout operator_ll; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); initDatas(); initVIEws(); } private voID initDatas() { dataList = new ArrayList<>(); for (int i = 0; i < 5; i++) { TestBean bean = new TestBean(); bean.setTitle("标题_" + i); bean.setContent("这是内容_" + i); bean.setType(i % 2 == 0 ? 1 : 2); dataList.add(bean); } } private voID initVIEws() { this.test_lv = (ListVIEw) findVIEwByID(R.ID.test_lv); this.add_btn = (button) findVIEwByID(R.ID.add_btn); this.del_btn = (button) findVIEwByID(R.ID.del_btn); emptyIv = (ImageVIEw) findVIEwByID(R.ID.empty_iv); operator_ll=(linearLayout)findVIEwByID(R.ID.operator_ll); this.add_btn.setonClickListener(this); this.del_btn.setonClickListener(this); if (dataList.size() == 0) { emptyIv.setVisibility(VIEw.VISIBLE); operator_ll.setVisibility(VIEw.GONE); test_lv.setEmptyVIEw(emptyIv); } else { emptyIv.setVisibility(VIEw.GONE); operator_ll.setVisibility(VIEw.VISIBLE); adapter = new TestAdapter(this,dataList); test_lv.setAdapter(adapter); } test_lv.setSelection(15); } @OverrIDe public voID onClick(VIEw v) { switch (v.getID()) { case R.ID.add_btn: //默认增加在第一个位置 TestBean bean = new TestBean(); bean.setTitle("增加项"); bean.setContent("这是增加内容"); bean.setType(1); dataList.add(0,bean); break; case R.ID.del_btn: //默认删除第一条数据 dataList.remove(0); break; } adapter.notifyDataSetChanged();//刷新ListVIEw数据 }}//ListVIEw对应Adapterpublic class TestAdapter extends BaseAdapter { private Context mContext; private List<TestBean> ListDatas; public TestAdapter(Context mContext,List<TestBean> ListDatas) { this.mContext = mContext; this.ListDatas = ListDatas; } @OverrIDe public int getCount() { return ListDatas.size(); } @OverrIDe public Object getItem(int position) { return ListDatas.get(position); } @OverrIDe public long getItemID(int position) { return position; } @OverrIDe public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) { VIEwHolder holder = null; if (convertVIEw == null) { holder = new VIEwHolder(); convertVIEw = LayoutInflater.from(mContext).inflate(R.layout.test_item,null); holder.Title = (TextVIEw) convertVIEw.findVIEwByID(R.ID.item_Title); holder.content = (TextVIEw) convertVIEw.findVIEwByID(R.ID.item_content); convertVIEw.setTag(holder); } else { holder = (VIEwHolder) convertVIEw.getTag(); } holder.content.setText(ListDatas.get(position).getContent()); holder.Title.setText(ListDatas.get(position).getTitle()); return convertVIEw; } final class VIEwHolder { TextVIEw Title; TextVIEw content; }}
** 类似聊天界面,ListVIEw中有多种item样式效果
//实现ListVIEw中多种item样式public class TypeActivity extends Activity { private ListVIEw type_lv; private List<TestBean> dataList; private TypeAdapter adapter; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_type); initDatas(); initVIEws(); } private voID initDatas() { dataList = new ArrayList<>(); for (int i = 0; i < 9; i++) { TestBean bean = new TestBean(); bean.setTitle("标题_" + i); bean.setContent("这是内容_" + i); bean.setType(i % 2 == 0 ? 1 : 2); dataList.add(bean); } } private voID initVIEws() { this.type_lv = (ListVIEw) findVIEwByID(R.ID.type_lv); adapter = new TypeAdapter(this,dataList); type_lv.setAdapter(adapter); }}//对应Adapterpublic class TypeAdapter extends BaseAdapter { private Context mContext; private List<TestBean> ListDatas; public TypeAdapter(Context mContext,VIEwGroup parent) { VIEwHolder holder = null; //根据样式设置不同的布局及数据展示 int type = getItemVIEwType(position); if (convertVIEw == null) { holder = new VIEwHolder(); if (type == 1) { convertVIEw = LayoutInflater.from(mContext).inflate(R.layout.test_item,null); holder.Title = (TextVIEw) convertVIEw.findVIEwByID(R.ID.item_Title); holder.content = (TextVIEw) convertVIEw.findVIEwByID(R.ID.item_content); } else { convertVIEw = LayoutInflater.from(mContext).inflate(R.layout.type_item,null); holder.Title = (TextVIEw) convertVIEw.findVIEwByID(R.ID.type_Title); holder.content = (TextVIEw) convertVIEw.findVIEwByID(R.ID.type_Title); } convertVIEw.setTag(holder); } else { holder = (VIEwHolder) convertVIEw.getTag(); } holder.content.setText(ListDatas.get(position).getContent()); holder.Title.setText(ListDatas.get(position).getTitle()); return convertVIEw; }//关键方法之getVIEwTypeCount:获取有多少种样式 @OverrIDe public int getVIEwTypeCount() { return 2; }//关键方法之getItemVIEwType:获取item类型 @OverrIDe public int getItemVIEwType(int position) { return ListDatas.get(position).getType(); } final class VIEwHolder { TextVIEw Title; TextVIEw content; }}
相关布局
activity_main.xml<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical"> <linearLayout androID:ID="@+ID/operator_ll" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:orIEntation="horizontal"> <button androID:ID="@+ID/add_btn" androID:layout_wIDth="0dp" androID:layout_height="wrap_content" androID:layout_weight="1" androID:gravity="center" androID:text="添加" /> <button androID:ID="@+ID/del_btn" androID:layout_wIDth="0dp" androID:layout_height="wrap_content" androID:layout_weight="1" androID:gravity="center" androID:text="删除" /> </linearLayout> <ListVIEw androID:ID="@+ID/test_lv" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:divIDer="#d1d1d1"<!--分隔线颜色--> androID:divIDerHeight="1px"<!--分隔线高度--> androID:ListSelector="@androID:color/transparent"<!--取消默认点击效果--> androID:scrollbars="none"><!--隐藏滚动条--> </ListVIEw> <ImageVIEw androID:ID="@+ID/empty_iv" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_gravity="center" androID:layout_margintop="100dp" androID:src="@mipmap/empty" androID:visibility="gone" /></linearLayout>
activity_type.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:orIEntation="vertical"> <ListVIEw androID:ID="@+ID/type_lv" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" ></ListVIEw></linearLayout>
test_item.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:orIEntation="vertical" androID:paddingleft="15dp" androID:layout_margintop="5dp" androID:layout_marginBottom="5dp"> <TextVIEw androID:ID="@+ID/item_Title" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="Hello World!" /> <TextVIEw androID:ID="@+ID/item_content" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_margintop="5dp" androID:text="Hello World!" /></linearLayout>
以上就是搜集的AndroID ListVIEw常用小技巧全部内容,希望对大家的学习有所帮助。
总结以上是内存溢出为你收集整理的Android ListView常用小技巧汇总全部内容,希望文章能够帮你解决Android ListView常用小技巧汇总所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)