Android ListView填充数据的方法

Android ListView填充数据的方法,第1张

概述AndroidListView填充数据的方法因为多人开发,为了是自己开发的模块方便融合到主框架中,同时也为了减小apk的大小,要求尽可能少的使用xml的布局文件,开发中需要在ListView中显示数据,网上查到的几乎所有的示例,

AndroID ListVIEw填充数据的方法

因为多人开发,为了是自己开发的模块方便融合到主框架中,同时也为了减小apk的大小,要求尽可能少的使用xml的布局文件,开发中需要在ListVIEw中显示数据,网上查到的几乎所有的示例,都是通过xml文件来为ListVIEw的Item提供布局样式,甚是不方便。

能不能将自己通过代码创建的布局(如VIEw,linearLayout)等动态的布局到ListVIEw呢?当然可以。

为了给ListVIEw提供数据,我们需要为其设置一个适配,我们可以从BaseAdapter继承,然后重写它的getVIEw方法,这个方法中有一个参数convertVIEw,我们可以将它设置为我们自定义的视图并返回,来实现加载用代码定义好的布局。

定义一个linearLayout布局,它是继承自VIEw的,所以可以通过getVIEw返回(注意:不要为这个布局使用 linearLayout.LayoutParams 参数,因为ListVIEw不识别,他识别的是AbsListVIEw LayoutParams

代码如下:

public class PriceBoard extends linearLayout {   private ListVIEw ListVIEw;   private List items;   private linearLayout.LayoutParams params;   public PriceBoard(Context context,AttributeSet attrs) {     super(context,attrs);     items = new ArrayList();     this.setorIEntation(HORIZONTAL);     params = new linearLayout.LayoutParams(LayoutParams.MATCH_PARENT,linearLayout.LayoutParams.MATCH_PARENT);     ListVIEw = new ListVIEw(context);     ListVIEw.setLayoutParams(params);     PriceBoardAdapter priceBoardAdapter = new PriceBoardAdapter(context);     ListVIEw.setAdapter(priceBoardAdapter);     addVIEw(ListVIEw,params);   }   public voID add(PriceData data){     PriceBoardItem item = new PriceBoardItem(this.getContext(),null);     item.setItem(data);     items.add(item);     params.setmargins(10,2); //    item.setLayoutParams(params);   }   public PriceBoardItem getItemVIEw(int index){     return (PriceBoardItem)items.get(index);   }   private class PriceBoardItem extends linearLayout{     private TextVIEw nameVIEw;     private TextVIEw enCodeVIEw;     private TextVIEw priceVIEw;     private PriceData priceData;     public PriceBoardItem(Context context,AttributeSet attrs) {       super(context,attrs);       this.setorIEntation(HORIZONTAL);       nameVIEw = new TextVIEw(context);       nameVIEw.setTextSize(TypedValue.COMPLEX_UNIT_PX,38);       enCodeVIEw = new TextVIEw(context);       enCodeVIEw.setTextSize(TypedValue.COMPLEX_UNIT_PX,28);       priceVIEw = new TextVIEw(context);       priceVIEw.setTextSize(TypedValue.COMPLEX_UNIT_PX,48);       priceVIEw.setGravity(Gravity.CENTER);       setLayout();     }     public TextVIEw getnameVIEw(){       return nameVIEw;     }     public TextVIEw getEnCodeVIEw(){       return enCodeVIEw;     }     public TextVIEw getPriceVIEw(){       return priceVIEw;     }     public PriceData getPriceData(){       return priceData;     }     private voID setLayout(){       LayoutParams p = new linearLayout.LayoutParams(linearLayout.LayoutParams.MATCH_PARENT,linearLayout.LayoutParams.WRAP_CONTENT,1);       linearLayout linearLayout = new linearLayout(getContext());       linearLayout.setorIEntation(VERTICAL);       linearLayout.addVIEw(nameVIEw,p);       linearLayout.addVIEw(enCodeVIEw,p);       addVIEw(linearLayout,p);        p = new linearLayout.LayoutParams(linearLayout.LayoutParams.MATCH_PARENT,linearLayout.LayoutParams.MATCH_PARENT,1);       linearLayout = new linearLayout(getContext());       linearLayout.setorIEntation(VERTICAL);       linearLayout.addVIEw(priceVIEw,p);     }     public voID setItem(PriceData data){       priceData = data;     }   }   private class PriceBoardAdapter extends BaseAdapter{     private Context _context;     public PriceBoardAdapter(Context context){       _context = context;     }     public int getCount(){       return items.size();     }     public Object getItem(int position) {       return position;     }      @OverrIDe     public long getItemID(int position) {       return position;     }      @OverrIDe     public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) {       PriceBoardItem vIEw = getItemVIEw(position);       PriceData data = ((PriceBoardItem) items.get(position)).getPriceData();       vIEw.getnameVIEw().setText(data.getname());       vIEw.getEnCodeVIEw().setText(data.getEnCode());       vIEw.getPriceVIEw().setText(String.valueOf(data.getPrice()));       convertVIEw = vIEw;       return convertVIEw;     }   } 

调用:

PriceBoard priceBoard = new PriceBoard(context,null); priceData = new PriceData(); priceData.setname("现货白银"); priceData.setEnCode("Ag"); priceData.setPrice(4006); priceBoard.add(priceData); priceData = new PriceData(); priceData.setname("现货铜"); priceData.setEnCode("Cu"); priceData.setPrice(43895); priceBoard.add(priceData); priceData = new PriceData(); priceData.setname("现货镍"); priceData.setEnCode("Ni"); priceData.setPrice(43895); priceBoard.add(priceData); addVIEw(priceBoard); 

效果:

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

以上是内存溢出为你收集整理的Android ListView填充数据的方法全部内容,希望文章能够帮你解决Android ListView填充数据的方法所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存