Android ListView常用小技巧汇总

Android ListView常用小技巧汇总,第1张

概述ListView在我们Android项目中的地位是有目共睹的,相信几乎每一个App中都有它的身影。

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常用小技巧汇总所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1149518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存