-
public void onItemClick(AdapterView<?> arg0,View view,int position, long id) {
Intent intent= new Intent(StudentsManagerActivity.this,sql.yxy.DetailActivity.class); intent.putExtra("cmd",0); //0代表查询学生,1代表添加学生 intent.putExtra("id",contactsId[position]); startActivity(intent);
触发器为ListView的Item的单机触发器,其实也可以使用选择触发器,下面还要说一说主界面用到的ListView:BaseAdapter myAdapter = new BaseAdapter(){ @Override public int getCount() { if(contactsName != null){ //如果姓名数组不为空 return contactsName.length; } else { return 0; //如果姓名数组为空则返回0 } } @Override public Object getItem(int arg0) { return null; } @Override public long getItemId(int arg0) { return 0; } @Override public View getView(int position,View convertView,ViewGroup parent) { LinearLayout ll = new LinearLayout(StudentsManagerActivity.this); ll.setOrientation(LinearLayout.HORIZONTAL); TextView tv = new TextView(StudentsManagerActivity.this); tv.setText(contactsName[position]); tv.setTextSize(32); tv.setTextColor(Color.GREEN); tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); tv.setGravity(Gravity.CENTER_VERTICAL); TextView tv2 = new TextView(StudentsManagerActivity.this); tv2.setText("["+contactsNo[position]+"]"); tv2.setTextSize(28); tv2.setTextColor(Color.RED); tv2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); tv2.setGravity(Gravity.BOTTOM|Gravity.RIGHT); //设置TextView控件在父容器中的位置 ll.addView(tv); ll.addView(tv2); return ll; } };
为了能够动态生成列表的内容,要为ListView准备内容适配器,并且需要重写适配器的几个方法,最主要的是getView方法,这里面定义了每个Item的布局,和XML文件不同,这里面用到的是XML属性对应的各种方法,这时感觉像是写JAVA。。。
还有一个值得注意的地方就是对数据库进行操作后主界面内容要更新:protected void onResume() { getBasicInfo(myHelper); myAdapter.notifyDataSetChanged(); super.onResume(); }
重写Activity的onResume()方法,你懂得。。。getBasicInfo()是自己定义的方法,notifyDataSetChanged()这个方法可以参考:http://blog.csdn.net/l_serein/article/details/6384969//方法:获取所有学生的姓名 public void getBasicInfo(MyOpenHelper helper){ sqliteDatabase db = helper.getWritableDatabase(); //获取数据库连接 Cursor c = db.query(TABLE_NAME,new String[]{ID,NAME,NO},null,ID); int idIndex = c.getColumnIndex(ID); int nameIndex = c.getColumnIndex(NAME); //获得姓名列的列号 int phoneIndex = c.getColumnIndex(NO); //获得电话列的序号 contactsName = new String[c.getCount()]; //创建存放姓名的String数组对象 contactsId = new int[c.getCount()]; //创建存放id的int数组对象 contactsNo = new String[c.getCount()]; //创建存放的数组对象 int i=0; //声明一个计数器 for(c.moveToFirst();!(c.isAfterLast());c.moveToNext()){ contactsName[i] = c.getString(nameIndex); //将姓名添加到String数组中 contactsId[i] = c.getInt(idIndex); contactsNo[i] = c.getString(phoneIndex); //将固定电话添加到String数组中 i++; } c.close(); //关闭Cursor对象 db.close(); //关闭sqliteDatabase对象 }
总之这个程序有两个Activity,一个主界面一个显示学生信息,还有一个MyOpenHelper类继承于sqliteOpenHelper类,还用到了菜单、滚动条、ImageButton等控件。。。