`
jandroid
  • 浏览: 1933803 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Android 实例-个人理财工具 之五 账单明细显示A

阅读更多

关键字:android sdk 1.0 custom listview

 

前面我们已经实现了把每月的收支明细,录入到了表中,现在就是要实现把这些数据从sqlite的数据表中取出来展现.

上图就是最后的界面.

在设计该界面时我考虑过好几个方案.本来准备使用一个gridview 因为觉得名字很像我需要的东西.可是后来查了一些资料,并且做了点实验,发现和我想象的有些差距.于是采用了目前这种方式.使用listview .

 

这个界面布局实际上很简单,就是上面一个表头(linearlayout) 中间一个listview 下面是一个脚注(linearlayout)

 

如何实现listview其中内容?这个主要就是要理解Adapter的用法.

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

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

这里我们只需要准备好view的样式,和cursor 就可以了.

例如本例中的

R.layout.grid_items是

  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

  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

  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的方法.

不知道有没有人帮我解决下这个问题.

分享到:
评论

相关推荐

    Android 个人理财工具三:添加账单页面 上

    总之,实现Android个人理财工具的账单页面涉及数据库设计、界面布局和数据适配器的使用。通过精心设计和代码实现,用户可以方便地添加和管理他们的财务记录,从而提高个人财务管理的效率。在后续的部分,开发者可能...

    Android 个人理财工具五:显示账单明细 上

    在Android应用开发中,创建一个个人理财工具的关键部分之一是展示用户的收支明细。在这个场景下,开发者需要从SQLite数据库中提取数据并将其呈现给用户。本文将深入探讨如何实现这一功能,特别是如何利用ListView和...

    基于Android的个人理财系统的设计与实现(源码+数据库+文档+截图).zip

    本个人理财软件系统是在Android移动平台的基础上开发,提供了预算管理、收支管理、明细管理、报表查询等基本功能,同时还为用户提供了简易计算、记事备忘、天气查询、股票信息、中英互译、手机信息查询等实用功能,...

    Android应用小实例--炫酷计时器

    在这个“Android应用小实例--炫酷计时器”中,我们将深入探讨如何在Android应用中创建并定制一个功能丰富的计时器。 计时器组件在Android SDK中是`android.widget.Chronometer`类,它类似于一个倒计时定时器,但...

    Android串口开发(android-serialport-api开发)工程实例

    Android串口开发(android-serialport-api开发)工程实例。SerialPortUtil里面有我常用的转换工具(16进制字符串转二进制字符串并补位、二进制字符串转16进制字符串并补位)

    个人理财通(Android).zip

    总结,个人理财通(Android)是Android平台上的一款实用理财工具,它结合了Android系统的特性和财务管理的需求,提供了全面的个人财务解决方案。虽然缺乏官方文档,但对于用户来说,它的直观界面和实用功能足以满足...

    android-sdk-windows.rar

    4. 配置AVD(Android Virtual Device):通过AVD Manager创建模拟器实例,选择设备配置、系统镜像和硬件选项,以便在Windows上运行Android应用。 三、使用Android SDK进行开发 1. 创建项目:使用Android Studio,...

    Android-Universal-Image-Loader Demo和jar包

    《Android-Universal-Image-Loader:高效加载与缓存图片的解决方案》 在移动开发领域,尤其是Android平台,图片加载和缓存是一个重要的课题。Android-Universal-Image-Loader(简称UIL)是一款强大的开源库,专门...

    Android-Adt-sdk(18-19)

    Android ADT SDK(Android Developer Tools Software Development Kit)是Android开发者用于构建、调试和发布Android应用程序的重要工具集。这个压缩包包含了版本18和19的SDK,分别对应Android 4.3 (API Level 18) ...

    android开发实例大全_王东华

    本书以Android应用程序的开发为主题,并结合真实的案例向读者详细介绍了Android的基本组件的使用及应用程序开发的整个流程。本书的讲述由浅入深,实例全面并典型,几乎囊括了所有和Android应用相关的项目。全书分为...

    android实例开发完全手册

    《Android实例开发完全手册》是一本深度探讨Android应用开发的实战型书籍,旨在通过丰富的实例帮助读者掌握Android开发的核心技术和实践技巧。这本书涵盖了从基础到高级的各个方面,为开发者提供了全面的学习路径。 ...

    android-async-http-master

    在Android平台上,由于UI线程不能长时间执行耗时操作,因此异步网络请求显得尤为重要,它可以确保用户界面的流畅性。 该库的核心类`AsyncHttpClient`提供了丰富的API,允许开发者轻松发起GET、POST等HTTP请求。例如...

    Android Wi-Fi Direct 开发示例代码

    **Android Wi-Fi Direct 开发详解** Wi-Fi Direct,也称为Wi-Fi P2P(Peer-to-Peer),是一种无线网络连接技术,允许设备之间无需通过传统Wi-Fi接入点(如路由器)进行直接通信。这种技术在Android平台上被广泛用于...

    android简单定位实例

    在Android平台上,实现简单的定位功能是一项常见的任务,它涉及到Android系统的地理位置服务,主要依赖于GPS(全球定位系统)以及网络定位技术。本实例将详细解析如何在Android应用中集成定位功能,让应用能够获取到...

    Android创意实例详解书籍源码

    《Android创意实例详解》这本书籍源码的分享,旨在为Android开发者提供丰富的实践案例和学习资源。这份源码集合涵盖了Android应用开发中的多种创新技术与设计思路,是深入理解和掌握Android开发技能的理想辅助资料。...

    天地图开发之Android-显示天地图

    总的来说,"天地图开发之Android-显示天地图"是一个涉及到Android SDK集成、地图API使用、地理位置服务、UI设计和性能优化等多个方面的问题。通过博客实例代码的学习和实践,可以深入了解如何在Android应用中实现天...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    Android Fragment实例

    在Android应用开发中,Fragment是Android SDK中的一个重要组件,它被设计用来支持多屏幕适配和增强用户界面的模块化。Fragment允许开发者将应用程序的功能或UI部分分解为独立的、可重用的组件,这些组件可以在不同的...

    matlab机构运动仿真simulink实例--四连杆机构

    matlab机构运动仿真simulink实例--四连杆机构

    android-support-v7-appcompat.rar with Palette

    Android Support Library v7 AppCompat库是Google为了兼容早期Android版本而推出的一个重要组件,它使得开发者可以将最新的Android设计元素和功能应用到Android 2.1(API级别7)及以上的设备上。此库包含了丰富的...

Global site tag (gtag.js) - Google Analytics