Android 개인 재 테 크 도구 5:계산서 내 역 표시

앞에서 우 리 는 매달 수지 내 역 을 SQLite 의 데이터 시트 에 저장 했다.본 고 는 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_아 이 템
XML/HTML 코드

<?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); 
  
 //getBillsTotal 
 total=(TextView)findViewById(R.id.totalitem); 
 total.setText(billdb.getBillsTotal("2008-11")); 
 } 
       grid_item.xml
XML/HTML 코드

<?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 에서 소 수 를 출력 할 수 있 습 니 다.근 데 99999.99/100 수출 이 1000000 원 이 더 라 고요.제 가 adb 셸 에서 조회 한 것 은 999999.99 입 니까?listview 에 도 착 했 을 때 1000000 이 되 었 습 니 다.Adapter 의 문 자 를 꺼 내 서 getString 방법 을 사용 한 것 같 습 니 다.
              시리즈 글:
                       Android 개인 재 테 크 도구 6:계산서 내 역 표시
                        Android 개인 재 테 크 도구 5:계산서 내 역 표시
                       Android 개인 재 테 크 도구 4:계산서 페이지 추가
                       Android 개인 재 테 크 도구 3:계산서 페이지 추가
                        Android 개인 재 테 크 도구 2:SQLite 를 사용 하여 시작 할 때 데이터 초기 화
                        Android 개인 재 태 크 도구 1:프로젝트 개요 와 시작 인터페이스의 실현
           이상 은 계산서 내 역 을 표시 하 는 기능 의 실현 에 관 한 것 입 니 다.추 후 관련 기능 을 계속 추가 하 겠 습 니 다.본 사이트 에 대한 지원 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기