关键字: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)
-
-
String[] from=
new
String[] {
"rowid"
,
"name"
,
"fee"
,
"sdate"
,
"desc"
};
-
int
[] to=
new
int
[] { R.id.item1, R.id.item2,R.id.item3,R.id.item4,R.id.item5 };
-
SimpleCursorAdapter mAdapter=
new
SimpleCursorAdapter(
this
,R.layout.grid_items, cur,from, to);
-
lv.setAdapter(mAdapter);
这里我们只需要准备好view的样式,和cursor 就可以了.
例如本例中的
R.layout.grid_items是
-
<?xml version=
"1.0"
encoding=
"utf-8"
?>
-
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
-
android:orientation=
"horizontal"
android:layout_width=
"fill_parent"
-
android:layout_height=
"fill_parent"
>
-
<TextView android:id=
"@+id/item1"
android:layout_height=
"fill_parent"
-
android:layout_width=
"wrap_content"
android:width=
"20dip"
-
/>
-
<TextView android:id=
"@+id/item2"
-
android:layout_height=
"fill_parent"
-
android:text=
"账目"
-
android:width=
"60dip"
android:layout_width=
"wrap_content"
/>
-
/>
-
<TextView android:id=
"@+id/item3"
-
android:text=
"费用(元)"
-
android:textSize=
"14dip"
android:width=
"60dip"
android:layout_width=
"wrap_content"
-
android:layout_height=
"fill_parent"
android:textStyle=
"bold|italic"
-
/>
-
<TextView android:id=
"@+id/item4"
-
android:layout_height=
"fill_parent"
-
android:text=
"日期"
-
android:width=
"80dip"
-
android:layout_width=
"wrap_content"
-
/>
-
<TextView android:id=
"@+id/item5"
-
android:layout_height=
"fill_parent"
-
android:text=
"备注"
-
android:width=
"100dip"
android:layout_width=
"wrap_content"
-
/>
-
-
</LinearLayout>
在Adapter中的to 参数中,指定这些TextView 使用那些Cursor的值.
我的cursor 就是含有这些字段"rowid","name", "fee","sdate","desc" .
准备好这些,使用lv.setAdapter(mAdapter)该方法就可以绑定了.
下面给出具体代码文件
Grid_bills.java
-
package com.cola.ui;
-
-
import java.util.ArrayList;
-
import java.util.HashMap;
-
import java.util.List;
-
import java.util.Map;
-
-
import android.app.Activity;
-
import android.database.Cursor;
-
import android.os.Bundle;
-
import android.util.Log;
-
import android.view.KeyEvent;
-
import android.view.View;
-
import android.widget.AbsoluteLayout;
-
import android.widget.EditText;
-
import android.widget.GridView;
-
import android.widget.LinearLayout;
-
import android.widget.ListView;
-
import android.widget.SimpleCursorAdapter;
-
import android.widget.TextView;
-
-
public
class
Grid_bills extends Activity {
-
BilldbHelper billdb;
-
View sv;
-
EditText edit;
-
AbsoluteLayout alayout;
-
int
a=10,b=10;
-
GridView grd;
-
-
TextView total;
-
-
-
protected
GridView listHands =
null
;
-
public
void
onCreate(Bundle icicle) {
-
super.onCreate(icicle);
-
setTitle(
"ColaBox-账单明细(2008-11月)"
);
-
-
setContentView( R.layout.grid_bills) ;
-
-
billdb =
new
BilldbHelper(
this
);
-
Cursor cur=billdb.getBills();
-
ListView lv=(ListView)findViewById(R.id.listview);
-
-
String[] from=
new
String[] {
"rowid"
,
"name"
,
"fee"
,
"sdate"
,
"desc"
};
-
int
[] to=
new
int
[] { R.id.item1, R.id.item2,R.id.item3,R.id.item4,R.id.item5 };
-
SimpleCursorAdapter mAdapter=
new
SimpleCursorAdapter(
this
,R.layout.grid_items, cur,from, to);
-
lv.setAdapter(mAdapter);
-
-
-
total=(TextView)findViewById(R.id.totalitem);
-
total.setText(billdb.getBillsTotal(
"2008-11"
));
-
-
}
grid_item.xml
-
<?xml version=
"1.0"
encoding=
"utf-8"
?>
-
<ScrollView xmlns:android=
"http://schemas.android.com/apk/res/android"
-
android:orientation=
"vertical"
-
android:layout_height=
"fill_parent"
android:layout_width=
"fill_parent"
>
-
<LinearLayout
-
android:id=
"@+id/LinearLayout01"
-
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation=
"vertical"
android:layout_height=
"fill_parent"
android:layout_width=
"fill_parent"
>
-
<LinearLayout android:id=
"@+id/layouthead"
-
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"
>
-
<TextView android:id=
"@+id/item1"
android:layout_height=
"fill_parent"
-
android:layout_width=
"wrap_content"
android:width=
"20dip"
-
/>
-
<TextView android:id=
"@+id/item2"
-
android:layout_height=
"fill_parent"
-
android:text=
"账目"
-
android:textStyle=
"bold"
android:width=
"60dip"
android:layout_width=
"wrap_content"
/>
-
/>
-
<TextView android:id=
"@+id/item3"
-
android:text=
"费用(元)"
-
android:textSize=
"14dip"
android:textStyle=
"bold"
android:width=
"60dip"
android:layout_width=
"wrap_content"
-
android:layout_height=
"fill_parent"
/>
-
<TextView android:id=
"@+id/item4"
-
android:layout_height=
"fill_parent"
-
android:text=
"日期"
-
android:textSize=
"14dip"
android:textStyle=
"bold"
android:width=
"80dip"
android:layout_width=
"wrap_content"
-
/>
-
<TextView android:id=
"@+id/item5"
-
android:layout_height=
"fill_parent"
-
android:text=
"备注"
-
android:textSize=
"14dip"
android:textStyle=
"bold"
android:width=
"100dip"
android:layout_width=
"wrap_content"
-
/>
-
</LinearLayout>
-
<View android:layout_width=
"fill_parent"
android:layout_height=
"1dip"
android:background=
"?android:attr/listDivider"
/>
-
<LinearLayout android:id=
"@+id/layout"
android:layout_width=
"wrap_content"
android:layout_height=
"fill_parent"
android:minHeight=
"372dip"
>
-
-
<ListView android:id=
"@+id/listview"
android:layout_height=
"fill_parent"
android:layout_width=
"fill_parent"
></ListView>
-
-
</LinearLayout>
-
<LinearLayout android:id=
"@+id/layoutfoot"
-
android:layout_width=
"fill_parent"
-
android:layout_height=
"wrap_content"
android:background=
"#ffCded8b"
>
-
-
<TextView android:id=
"@+id/totalitem"
-
android:layout_height=
"fill_parent"
-
android:text=
"当月收入:2009.33 支出:3000.87 小计:-1000.9"
-
android:textStyle=
"bold"
android:layout_width=
"fill_parent"
/>
-
/>
-
-
</LinearLayout>
-
</LinearLayout>
-
</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应用开发中,创建一个个人理财工具的关键部分之一是展示用户的收支明细。在这个场景下,开发者需要从SQLite数据库中提取数据并将其呈现给用户。本文将深入探讨如何实现这一功能,特别是如何利用ListView和...
本个人理财软件系统是在Android移动平台的基础上开发,提供了预算管理、收支管理、明细管理、报表查询等基本功能,同时还为用户提供了简易计算、记事备忘、天气查询、股票信息、中英互译、手机信息查询等实用功能,...
在这个“Android应用小实例--炫酷计时器”中,我们将深入探讨如何在Android应用中创建并定制一个功能丰富的计时器。 计时器组件在Android SDK中是`android.widget.Chronometer`类,它类似于一个倒计时定时器,但...
Android串口开发(android-serialport-api开发)工程实例。SerialPortUtil里面有我常用的转换工具(16进制字符串转二进制字符串并补位、二进制字符串转16进制字符串并补位)
总结,个人理财通(Android)是Android平台上的一款实用理财工具,它结合了Android系统的特性和财务管理的需求,提供了全面的个人财务解决方案。虽然缺乏官方文档,但对于用户来说,它的直观界面和实用功能足以满足...
4. 配置AVD(Android Virtual Device):通过AVD Manager创建模拟器实例,选择设备配置、系统镜像和硬件选项,以便在Windows上运行Android应用。 三、使用Android SDK进行开发 1. 创建项目:使用Android Studio,...
《Android-Universal-Image-Loader:高效加载与缓存图片的解决方案》 在移动开发领域,尤其是Android平台,图片加载和缓存是一个重要的课题。Android-Universal-Image-Loader(简称UIL)是一款强大的开源库,专门...
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平台上,由于UI线程不能长时间执行耗时操作,因此异步网络请求显得尤为重要,它可以确保用户界面的流畅性。 该库的核心类`AsyncHttpClient`提供了丰富的API,允许开发者轻松发起GET、POST等HTTP请求。例如...
**Android Wi-Fi Direct 开发详解** Wi-Fi Direct,也称为Wi-Fi P2P(Peer-to-Peer),是一种无线网络连接技术,允许设备之间无需通过传统Wi-Fi接入点(如路由器)进行直接通信。这种技术在Android平台上被广泛用于...
在Android平台上,实现简单的定位功能是一项常见的任务,它涉及到Android系统的地理位置服务,主要依赖于GPS(全球定位系统)以及网络定位技术。本实例将详细解析如何在Android应用中集成定位功能,让应用能够获取到...
《Android创意实例详解》这本书籍源码的分享,旨在为Android开发者提供丰富的实践案例和学习资源。这份源码集合涵盖了Android应用开发中的多种创新技术与设计思路,是深入理解和掌握Android开发技能的理想辅助资料。...
总的来说,"天地图开发之Android-显示天地图"是一个涉及到Android SDK集成、地图API使用、地理位置服务、UI设计和性能优化等多个方面的问题。通过博客实例代码的学习和实践,可以深入了解如何在Android应用中实现天...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
在Android应用开发中,Fragment是Android SDK中的一个重要组件,它被设计用来支持多屏幕适配和增强用户界面的模块化。Fragment允许开发者将应用程序的功能或UI部分分解为独立的、可重用的组件,这些组件可以在不同的...
matlab机构运动仿真simulink实例--四连杆机构
Android Support Library v7 AppCompat库是Google为了兼容早期Android版本而推出的一个重要组件,它使得开发者可以将最新的Android设计元素和功能应用到Android 2.1(API级别7)及以上的设备上。此库包含了丰富的...