Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android個人理財工具實例之五:顯示賬單明細 上

Android個人理財工具實例之五:顯示賬單明細 上

編輯:Android開發實例

       前面我們已經將每個月的收支明細存入到SQLite的數據表中,本文將實現從SQLite的數據表中取出這些數據顯示為賬單明細界面。

       下圖是最終的效果圖:

 Android個人理財工具實例之五:顯示賬單明細 上

       在設計該界面時我考慮過好幾個方案。本來准備使用一個gridview,因為覺得名字很像我需要的東西。可是後來查了一些資料,並且做了點實驗,發現和我想象的有些差距。於是采用了目前這種方式。使用Listview。 

       這個界面布局實際上很簡單,就是上面一個表頭(Linearlayout),中間一個Listview,下面是一個腳注(Linearlayout)。

       如何實現listview其中內容?這個主要就是要理解Adapter的用法。

       SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)

Java代碼
  1. String[] from=new String[] {"rowid","name", "fee","sdate","desc" };   
  2. int[] to=new int[] { R.id.item1, R.id.item2,R.id.item3,R.id.item4,R.id.item5 };   
  3. SimpleCursorAdapter mAdapter=new SimpleCursorAdapter(this,R.layout.grid_items, cur,from, to);   
  4. lv.setAdapter(mAdapter);  

       這裡我們只需要准備好view的樣式和cursor就可以了。

       例如本例中的

       R.layout.grid_items是

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
  3.     android:orientation="horizontal" android:layout_width="fill_parent"     
  4.     android:layout_height="fill_parent">     
  5.         <TextView android:id="@+id/item1" android:layout_height="fill_parent"     
  6.         android:layout_width="wrap_content" android:width="20dip"  
  7.         />     
  8.         <TextView android:id="@+id/item2"    
  9.         android:layout_height="fill_parent"     
  10.         android:text="賬目"    
  11.         android:width="60dip" android:layout_width="wrap_content"/>     
  12.         />    
  13.         <TextView android:id="@+id/item3"    
  14.         android:text="費用(元)"    
  15.         android:textSize="14dip" android:width="60dip" android:layout_width="wrap_content"  
  16.         android:layout_height="fill_parent" android:textStyle="bold|italic"  
  17.         />    
  18.         <TextView android:id="@+id/item4"  
  19.         android:layout_height="fill_parent"             
  20.         android:text="日期"  
  21.         android:width="80dip"  
  22.         android:layout_width="wrap_content"  
  23.         />    
  24.         <TextView android:id="@+id/item5"    
  25.         android:layout_height="fill_parent"             
  26.         android:text="備注"    
  27.         android:width="100dip" android:layout_width="wrap_content"  
  28.         />      
  29.          
  30. </LinearLayout>   

       在Adapter中的to 參數中,指定這些TextView使用那些Cursor的值。

       我的cursor就是含有這些字段"rowid","name","fee","sdate","desc"。

       准備好這些,使用lv.setAdapter(mAdapter)方法就可以綁定了。

       下面給出具體代碼文件:

       Grid_bills.java

Java代碼
  1. package com.cola.ui;   
  2. import java.util.ArrayList;   
  3. import java.util.HashMap;   
  4. import java.util.List;   
  5. import java.util.Map;   
  6. import android.app.Activity;   
  7. import android.database.Cursor;   
  8. import android.os.Bundle;   
  9. import android.util.Log;   
  10. import android.view.KeyEvent;   
  11. import android.view.View;   
  12. import android.widget.AbsoluteLayout;   
  13. import android.widget.EditText;   
  14. import android.widget.GridView;   
  15. import android.widget.LinearLayout;   
  16. import android.widget.ListView;   
  17. import android.widget.SimpleCursorAdapter;   
  18. import android.widget.TextView;   
  19. public class Grid_bills extends Activity {       
  20.     BilldbHelper billdb;   
  21.     View sv;   
  22.     EditText edit;   
  23.     AbsoluteLayout alayout;   
  24.     int a=10,b=10;   
  25.     GridView grd;   
  26.        
  27.     TextView total;   
  28.        
  29.     protected GridView listHands = null ;   
  30.     public void onCreate(Bundle icicle) {   
  31.         super.onCreate(icicle);   
  32.         setTitle("ColaBox-賬單明細(2008-11月)");        
  33.         
  34.         setContentView( R.layout.grid_bills) ;    
  35.         billdb = new BilldbHelper(this);   
  36.         Cursor cur=billdb.getBills();   
  37.         ListView lv=(ListView)findViewById(R.id.listview);   
  38.         String[] from=new String[] {"rowid","name", "fee","sdate","desc" };   
  39.         int[] to=new int[] { R.id.item1, R.id.item2,R.id.item3,R.id.item4,R.id.item5 };   
  40.         SimpleCursorAdapter mAdapter=new SimpleCursorAdapter(this,R.layout.grid_items, cur,from, to);   
  41.         lv.setAdapter(mAdapter);   
  42.            
  43.         //getBillsTotal   
  44.         total=(TextView)findViewById(R.id.totalitem);   
  45.         total.setText(billdb.getBillsTotal("2008-11"));   
  46.     }      

       grid_item.xml

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_height="fill_parent" android:layout_width="fill_parent">  
  5. <LinearLayout    
  6. android:id="@+id/LinearLayout01"    
  7. xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_height="fill_parent" android:layout_width="fill_parent">  
  8.     <LinearLayout android:id="@+id/layouthead"    
  9.     android:background="#ffCded8b" android:layout_height="fill_parent" android:layout_width="fill_parent" android:focusable="true" android:clickable="true" android:focusableInTouchMode="true" android:keepScreenOn="true">       
  10.         <TextView android:id="@+id/item1" android:layout_height="fill_parent"     
  11.         android:layout_width="wrap_content" android:width="20dip"  
  12.         />     
  13.         <TextView android:id="@+id/item2"    
  14.         android:layout_height="fill_parent"     
  15.         android:text="賬目"    
  16.         android:textStyle="bold" android:width="60dip" android:layout_width="wrap_content"/>     
  17.         />    
  18.         <TextView android:id="@+id/item3"    
  19.         android:text="費用(元)"    
  20.         android:textSize="14dip" android:textStyle="bold" android:width="60dip" android:layout_width="wrap_content"  
  21.         android:layout_height="fill_parent"/>    
  22.         <TextView android:id="@+id/item4"  
  23.         android:layout_height="fill_parent"             
  24.         android:text="日期"  
  25.         android:textSize="14dip" android:textStyle="bold" android:width="80dip" android:layout_width="wrap_content"  
  26.         />    
  27.         <TextView android:id="@+id/item5"    
  28.         android:layout_height="fill_parent"             
  29.         android:text="備注"    
  30.         android:textSize="14dip" android:textStyle="bold" android:width="100dip" android:layout_width="wrap_content"  
  31.         />       
  32.     </LinearLayout>  
  33.     <View  android:layout_width="fill_parent" android:layout_height="1dip" android:background="?android:attr/listDivider"/>  
  34.     <LinearLayout android:id="@+id/layout" android:layout_width="wrap_content" android:layout_height="fill_parent" android:minHeight="372dip">  
  35.        
  36.     <ListView android:id="@+id/listview" android:layout_height="fill_parent" android:layout_width="fill_parent"></ListView>  
  37. </LinearLayout>  
  38.     <LinearLayout android:id="@+id/layoutfoot"    
  39.     android:layout_width="fill_parent"    
  40.     android:layout_height="wrap_content" android:background="#ffCded8b">       
  41.             
  42.         <TextView android:id="@+id/totalitem"    
  43.         android:layout_height="fill_parent"     
  44.         android:text="當月收入:2009.33 支出:3000.87 小計:-1000.9"    
  45.         android:textStyle="bold"  android:layout_width="fill_parent" />     
  46.         />    
  47.               
  48.     </LinearLayout>  
  49.         </LinearLayout>  
  50. </ScrollView>  

       這次我在sqlite的sql上面遇到點麻煩,目前還沒搞定,就是我保存在數據庫中的費用是int型,分為單位。我從數據庫中取出來是 select fee/100 from bills ;但是顯示的卻是取整後的數值。

       不知道正確語法應該是什麼樣子,後面我想拼成字符顯示應該可以,我就試了 select fee/100||'' from bills;,這樣就可以在listview上面輸出小數。可是我發現999999.99/100 輸出卻是1000000。我在adb shell裡面查詢還是999999.99,到了listview時就變成了1000000,我估計可能是Adapter 裡面的字符取出來用了getString的方法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved