Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1183|回复: 0

[实例教程]android记事本的小例子

[复制链接]

该用户从未签到

发表于 2011-10-22 13:32:15 | 显示全部楼层 |阅读模式
我们先在XML里把界面搭建起来。

java代码: < ?xml version="1.0" encoding="utf-8"?>



<LINEARLAYOUT xmlns:android="http://schemas.android.com/apk/res/android" androidrientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">



</LINEARLAYOUT>



<LINEARLAYOUT

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="wrap_content">





<TEXTVIEW

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="标题" />



<EDITTEXT

android:id="@+id/title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_weight="1" />



</LINEARLAYOUT>





<TEXTVIEW

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="内容" />



<EDITTEXT

android:id="@+id/body"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1"

android:scrollbars="vertical" />



<BUTTON

android:id="@+id/confirm"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="写好了">



</BUTTON>
图片:






main代码:

package android.lesson45;







import android.app.ListActivity;



import android.content.Intent;



import android.database.Cursor;



import android.database.sqlite.SQLiteDatabase;



import android.os.Bundle;



import android.view.ContextMenu;



import android.view.ContextMenu.ContextMenuInfo;



import android.view.Menu;



import android.view.MenuItem;



import android.view.View;



import android.widget.AdapterView.AdapterContextMenuInfo;



import android.widget.ListView;



import android.widget.SimpleCursorAdapter;



import android.widget.Toast;







public class MainActivity extends ListActivity {





private static final int ACTIVITY_CREATE = 0;



private static final int ACTIVITY_EDIT = 1;





//菜单项也是需要唯一标示的所以我们定义下面的常量



public static final int INSERT_ID = Menu.FIRST;



private static final int DELETE_ID = Menu.FIRST + 1;







private DbHelper dbHelper;



private SQLiteDatabase db;



private Cursor c;







/** Called when the activity is first created. */



@Override



public void onCreate(Bundle savedInstanceState) {







super.onCreate(savedInstanceState);



setContentView(R.layout.main);







// 创建一个数据库工具类



dbHelper = new DbHelper(this);



// 获得数据库对象



db = dbHelper.getWritableDatabase();



// 填充数据



fillData();



// 给ListView绑定上下文菜单



registerForContextMenu(getListView());







}







// 添加新记录



private void addNote() {



Intent i = new Intent(this, EditActivity.class);



//注意看第二个参数,它给本次请求设置了个 请求代码 requestCode作为返回标示



startActivityForResult(i, ACTIVITY_CREATE);



}







// 填充数据



private void fillData() {



// 查询全部数据,返回游标对象



c = dbHelper.fetchAll(db);



// 让Activity开始管理游标对象



startManagingCursor(c);







String[] from = new String[] { DbHelper.KEY_TITLE };



int[] to = new int[] { android.R.id.text1};







// 创建一个SimpleCursorAdapter对象



SimpleCursorAdapter sca = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, from, to);



// 给ListActivity设置Adapter



setListAdapter(sca);







}







// 创建Options菜单



@Override



public boolean onCreateOptionsMenu(Menu menu) {



menu.add(0, INSERT_ID, 0, "新建");



return super.onCreateOptionsMenu(menu);



}







// 菜单项被选中时



@Override



public boolean onOptionsItemSelected(MenuItem item) {



Toast.makeText(this, "Option菜单项被选中", Toast.LENGTH_SHORT).show();



switch (item.getItemId()) {



case INSERT_ID:



addNote();



return true;



}



return super.onOptionsItemSelected(item);



}







//上下文菜单被创建



@Override



public void onCreateContextMenu(ContextMenu menu, View v,



ContextMenuInfo menuInfo) {



super.onCreateContextMenu(menu, v, menuInfo);



menu.add(0, DELETE_ID, 0, "删除");



}







// 上下文菜单选项被选择



@Override



public boolean onContextItemSelected(MenuItem item) {



Toast.makeText(this, "上下文菜单项被选中", Toast.LENGTH_SHORT).show();



switch (item.getItemId()) {



// 当删除按钮被选择时



case DELETE_ID:



// AdapterContextMenuInfo里包含ListView中选中项的信息



AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();



// 删除Id



dbHelper.delete(db, info.id);



// 删除以后再次填充数据



fillData();



return true;



}



return super.onContextItemSelected(item);



}







// 点击某一条记录的标题后新开个窗口去编辑这条记录



@Override



protected void onListItemClick(ListView l, View v, int position, long id) {







super.onListItemClick(l, v, position, id);







Cursor c1 = c;



c1.moveToPosition(position);



// 新建Intent



Intent i = new Intent(this, EditActivity.class);



// 把当前记录存入Extras



i.putExtra(DbHelper.KEY_ROWID, id);



i.putExtra(DbHelper.KEY_TITLE, c1.getString(c1.getColumnIndexOrThrow(DbHelper.KEY_TITLE)));



i.putExtra(DbHelper.KEY_BODY, c1.getString(c1.getColumnIndexOrThrow(DbHelper.KEY_BODY)));



// 调用另外一个Activity,给他一个请求标记,以便返回的时候知道是谁



startActivityForResult(i, ACTIVITY_EDIT);



}







// onActivityResult方法用来接收另外一个你用startActivityForResult方法开启的窗口结束时传回来的数据



@Override



protected void onActivityResult(int requestCode, int resultCode, Intent intent) {





super.onActivityResult(requestCode, resultCode, intent);





Bundle extras = intent.getExtras();



//看是从哪里返回的



switch (requestCode) {



//从创建记录的Activity窗口返回的



case ACTIVITY_CREATE:



String title = extras.getString(DbHelper.KEY_TITLE);



String body = extras.getString(DbHelper.KEY_BODY);



dbHelper.add(db, title, body);



fillData();



break;



//从修改记录的Activity窗口返回的



case ACTIVITY_EDIT:



Long rowId = extras.getLong(DbHelper.KEY_ROWID);



if (rowId != null) {



String editTitle = extras.getString(DbHelper.KEY_TITLE);



String editBody = extras.getString(DbHelper.KEY_BODY);



dbHelper.update(db, rowId, editTitle, editBody);



}



fillData();



break;



}



}



}
回复

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:32:21 | 显示全部楼层

Re:[实例教程]android记事本的小例

那这个开刀
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-10-22 13:32:28 | 显示全部楼层

Re:[实例教程]android记事本的小例

这代码就不全,分明是cope别人的,真汗...
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:32:49 | 显示全部楼层

Re:[实例教程]android记事本的小例

ddddddddddddddddddddd
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:32:56 | 显示全部楼层

Re:[实例教程]android记事本的小例

先试试看
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:33:05 | 显示全部楼层

Re:[实例教程]android记事本的小例

全错,XML布局文件错,Activity也错(有几个呀?),抄也用心点嘛
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:33:14 | 显示全部楼层

Re:[实例教程]android记事本的小例

不爽,顶你几次,挣够今日的豆.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:33:26 | 显示全部楼层

Re:[实例教程]android记事本的小例

不爽,顶你几次,挣够今日的豆.
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-10-22 13:33:36 | 显示全部楼层

Re:[实例教程]android记事本的小例

不爽,顶你几次,挣够今日的豆.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-3-26 23:28:54 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 23:38 , Processed in 0.397083 second(s), 45 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表