界面的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" android:orientation="vertical" android:layout_height="fill_parent" android:layout_width="fill_parent">
<LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="选择账目" android:minWidth="80dip" android:textAppearance="?android:attr/textAppearanceLarge"></TextView>
<EditText android:id="@+id/edittext_acctitem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="200dip" android:maxLines="1" android:editable="false" android:cursorVisible="false"></EditText>
</LinearLayout>
<View android:layout_width="fill_parent" android:layout_height="1dip" android:background="?android:attr/listDivider"/>
<LinearLayout android:id="@+id/LinearLayout03" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="填入费用" android:minWidth="80dip" android:textAppearance="?android:attr/textAppearanceLarge"></TextView>
<EditText android:id="@+id/Fee" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numeric="decimal" android:width="160dip"></EditText>
<TextView android:id="@+id/TextView13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="(元)" android:textAppearance="?android:attr/textAppearanceLarge"></TextView>
</LinearLayout>
<View android:layout_width="fill_parent" android:layout_height="1dip" android:background="?android:attr/listDivider"/>
<LinearLayout android:id="@+id/LinearLayout04" android:layout_height="wrap_content" android:layout_width="fill_parent">
<TextView android:id="@+id/TextView02" android:layout_height="wrap_content" android:text="选择时间" android:layout_width="fill_parent" android:fadingEdge="horizontal" android:height="24dip" android:drawablePadding="2dip"></TextView>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout05" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:id="@+id/vdate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:width="120dip"></TextView>
<Button android:id="@+id/BtnDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+" android:textStyle="bold" android:textSize="24dip" android:height="30dip" android:width="30dip"></Button>
<TextView android:id="@+id/vtime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:width="80dip" android:gravity="center_horizontal"></TextView>
<Button android:id="@+id/BtnTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+" android:textStyle="bold" android:textSize="24dip"></Button>
</LinearLayout>
<View android:layout_width="fill_parent" android:layout_height="1dip" android:background="?android:attr/listDivider"/>
<LinearLayout android:id="@+id/LinearLayout06" android:layout_height="wrap_content" android:layout_width="fill_parent">
<TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="账目类型" android:minWidth="80dip" android:textAppearance="?android:attr/textAppearanceLarge"></TextView>
<Spinner android:id="@+id/Spinner01" android:layout_height="wrap_content" android:minWidth="200dip" android:layout_width="wrap_content"></Spinner>
</LinearLayout>
<View android:layout_width="fill_parent" android:layout_height="1dip" android:background="?android:attr/listDivider"/>
<TextView android:id="@+id/TextView07" android:layout_height="wrap_content" android:text="填写备注" android:layout_width="fill_parent" android:height="24dip" ></TextView>
<EditText android:id="@+id/EditTextDESC" android:layout_width="fill_parent" android:layout_height="wrap_content" android:lines="4" android:gravity="top"></EditText>
<View android:layout_width="fill_parent" android:layout_height="1dip" android:background="?android:attr/listDivider"/>
<LinearLayout android:id="@+id/LinearLayout08" android:layout_height="wrap_content" android:layout_width="fill_parent">
<Button android:id="@+id/BtnSave" android:width="160dip" android:text="保 存" android:textStyle="bold" android:textSize="24dip" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:id="@+id/BtnCancel" android:width="160dip" android:text="取 消" android:textStyle="bold" android:textSize="24dip" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
<View android:layout_width="fill_parent" android:layout_height="1dip" android:background="?android:attr/listDivider"/>
</LinearLayout>
</ScrollView>
下面我们来看下spinner和cursor的用法.
主要就是一个SimpleCursorAdapter
代码如下
s1=(Spinner) findViewById(R.id.Spinner01);
String[] from= new String[]{"caption"};//需要显示游标里面的字段
int[] to=new int[]{android.R.id.text1};
Cursor cur=billdb.getUserid();
SimpleCursorAdapter mAdapter=new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item, cur,from, to);
mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(mAdapter);
我在这儿居然搞了2天,其实写法一直没错,可是每次抱未知的行 _ID. 这个错误我也知道就是使用SimpleCursorAdapter 该方法
的游标里面必须包括一个_ID的字段. 可是我的表里面肯定有的. 在我重试了无数次后发现,区分大小写. 我倒!
而事实上我建表的语句是
db.execSQL("Create table tusers (_id integer primary key autoincrement," +
"caption text not null)");
而我在函数getUserid 里面cursor定义是
public Cursor getUserid(){
Log.v("cola","run get users cursor");
return db.query("tusers", new String[]{"_ID", "caption" }, null, null, null, null, null);
}
你单独测试这个cursor是没有问题的.
这都没用问题,也就是在这儿是不区分大小写的.但是如果你用这个cursor 绑定到SimpleCursorAdapter 这个里面去,一定要和建表语句的一致,不然就出错. 这儿把我郁闷坏了.
上面界面布局和这个spinner 搞定后,后面就是完善代码,完善界面的功能.没有新的地方了.
在用户选择完账目,填写费用,选择时间,账目类型后就保存进数据库bills表. 下周开始我计划使用一个grid把录入的数据显示出来,
还不知道grid支持横向滚动不,如果不支持估计又要自定义控件了.