最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android ListView填充數(shù)據(jù)的方法

 更新時(shí)間:2017年09月04日 08:44:19   作者:bdmh  
這篇文章主要介紹了Android ListView填充數(shù)據(jù)的方法的相關(guān)資料,大多數(shù)實(shí)現(xiàn)這樣的功能都是使用XML文件,這里就說(shuō)下不使用布局文件如何實(shí)現(xiàn),需要的朋友可以參考下

Android ListView填充數(shù)據(jù)的方法

因?yàn)槎嗳碎_(kāi)發(fā),為了是自己開(kāi)發(fā)的模塊方便融合到主框架中,同時(shí)也為了減小apk的大小,要求盡可能少的使用xml的布局文件,開(kāi)發(fā)中需要在ListView中顯示數(shù)據(jù),網(wǎng)上查到的幾乎所有的示例,都是通過(guò)xml文件來(lái)為L(zhǎng)istView的Item提供布局樣式,甚是不方便。

能不能將自己通過(guò)代碼創(chuàng)建的布局(如View,LinearLayout)等動(dòng)態(tài)的布局到ListView呢?當(dāng)然可以。

為了給ListView提供數(shù)據(jù),我們需要為其設(shè)置一個(gè)適配,我們可以從BaseAdapter繼承,然后重寫它的getView方法,這個(gè)方法中有一個(gè)參數(shù)convertView,我們可以將它設(shè)置為我們自定義的視圖并返回,來(lái)實(shí)現(xiàn)加載用代碼定義好的布局。

定義一個(gè)LinearLayout布局,它是繼承自View的,所以可以通過(guò)getView返回(注意:不要為這個(gè)布局使用 LinearLayout.LayoutParams 參數(shù),因?yàn)長(zhǎng)istView不識(shí)別,他識(shí)別的是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,0,0,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); 
      addView(linearLayout, 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; 
    } 
  } 

調(diào)用:

PriceBoard priceBoard = new PriceBoard(context,null); 
priceData = new PriceData(); 
priceData.setName("現(xiàn)貨白銀"); 
priceData.setEnCode("Ag"); 
priceData.setPrice(4006); 
priceBoard.add(priceData); 
priceData = new PriceData(); 
priceData.setName("現(xiàn)貨銅"); 
priceData.setEnCode("Cu"); 
priceData.setPrice(43895); 
priceBoard.add(priceData); 
priceData = new PriceData(); 
priceData.setName("現(xiàn)貨鎳"); 
priceData.setEnCode("Ni"); 
priceData.setPrice(43895); 
priceBoard.add(priceData); 
addView(priceBoard); 

效果:

如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • Android Shader著色器/渲染器的用法解析

    Android Shader著色器/渲染器的用法解析

    這篇文章主要介紹了Android Shader著色器/渲染器的用法解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Flutter 中的PageStorage小部件使用及最佳實(shí)踐

    Flutter 中的PageStorage小部件使用及最佳實(shí)踐

    在Flutter中,PageStorage小部件提供了一種方法來(lái)保存和恢復(fù)頁(yè)面間的信息,這對(duì)于具有多個(gè)頁(yè)面且需要在這些頁(yè)面之間共享狀態(tài)的應(yīng)用程序非常有用,本文將詳細(xì)介紹PageStorage的用途、如何使用它以及一些最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Android組件創(chuàng)建DrawerLayout導(dǎo)航

    Android組件創(chuàng)建DrawerLayout導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了Android組件創(chuàng)建DrawerLayout導(dǎo)航的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android布局之GridLayout網(wǎng)格布局

    Android布局之GridLayout網(wǎng)格布局

    網(wǎng)格布局標(biāo)簽是GridLayout。這個(gè)布局是android4.0新增的布局。這個(gè)布局只有4.0之后的版本才能使用。本文給大家介紹Android布局之GridLayout網(wǎng)格布局相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • 詳解Android中IntentService的使用方法

    詳解Android中IntentService的使用方法

    這篇文章主要介紹了Android中IntentService的使用方法,需要的朋友可以參考下
    2015-12-12
  • 詳解android 通過(guò)uri獲取bitmap圖片并壓縮

    詳解android 通過(guò)uri獲取bitmap圖片并壓縮

    這篇文章主要介紹了詳解android 通過(guò)uri獲取bitmap圖片并壓縮的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Android中Fragment的分屏顯示處理橫豎屏顯示的實(shí)現(xiàn)方法

    Android中Fragment的分屏顯示處理橫豎屏顯示的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇關(guān)于Android中Fragment的分屏顯示處理橫豎屏顯示的實(shí)現(xiàn)方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Android編程獲取Wifi名稱(SSID)的方法

    Android編程獲取Wifi名稱(SSID)的方法

    這篇文章主要介紹了Android編程獲取Wifi名稱(SSID)的方法,涉及Android基于WifiManager和WifiInfo操作Wifi信息的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • Android Http實(shí)現(xiàn)文件的上傳和下載

    Android Http實(shí)現(xiàn)文件的上傳和下載

    這篇文章主要為大家詳細(xì)介紹了Android Http實(shí)現(xiàn)文件的上傳和下載,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 利用Fiddler對(duì)手機(jī)進(jìn)行抓包的實(shí)現(xiàn)方法

    利用Fiddler對(duì)手機(jī)進(jìn)行抓包的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇利用Fiddler對(duì)手機(jī)進(jìn)行抓包的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05

最新評(píng)論

兴山县| 水富县| 广元市| 卢湾区| 霞浦县| 岳阳县| 高要市| 新和县| 彰化市| 永善县| 吉首市| 连城县| 灌云县| 浮山县| 天津市| 荣昌县| 南召县| 兴和县| 景泰县| 定结县| 马尔康县| 汉寿县| 建湖县| 淳化县| 新乐市| 汨罗市| 永定县| 民权县| 旬阳县| 英吉沙县| 泸西县| 丰城市| 五指山市| 阿合奇县| 乌海市| 辽宁省| 英山县| 信宜市| 合江县| 潮州市| 融水|