第一个界面布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="主页"
android:textSize="26sp"/>
<Button
android:id="@+id/bt_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑"
android:onClick="click"
android:textSize="24sp"
android:layout_marginLeft="30dp"/>
</LinearLayout>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
第一个界面逻辑代码文件:
package mars.wangshouxue;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ListView;
import android.widget.Toast;
public class FirstActivity extends Activity {
ListView lv;
MyAdapter adapter;
List<Map<String,Object>> list;
MyOpenHelper helper;
String content_name,content_address,content_love;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_activity);
lv=(ListView) findViewById(R.id.lv);
helper=new MyOpenHelper(getApplicationContext());
getData();
adapter=new MyAdapter(FirstActivity.this, list);
lv.setAdapter(adapter);
registerForContextMenu(lv);
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
content_name=list.get(arg2).get("name").toString();
content_address=list.get(arg2).get("address").toString();
content_love=list.get(arg2).get("love").toString();
//Toast.makeText(getApplicationContext(),content_name+" "+content_address+" "+content_love, 0).show();
return false;
}
});
}
@Override
protected void onRestart() {
super.onRestart();
getData();
lv.setAdapter(new MyAdapter(FirstActivity.this,list));
}
public List<Map<String,Object>> getData()
{
list=new ArrayList<Map<String,Object>>();
SQLiteDatabase db=helper.getReadableDatabase();
String sql="select * from information";
Cursor cursor = db.rawQuery(sql, null);
while(cursor.moveToNext())
{
Map<String,Object> map=new HashMap<String, Object>();
String name=cursor.getString(cursor.getColumnIndex("name"));
String address=cursor.getString(cursor.getColumnIndex("address"));
String love=cursor.getString(cursor.getColumnIndex("love"));
map.put("name", name);
map.put("address", address);
map.put("love", love);
list.add(map);
//Toast.makeText(getApplicationContext(),name+"\n"+address+"\n"+love, 0).show();
}
db.close();
return list;
}
public void click(View v)
{
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.mymenu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.delete:
SQLiteDatabase db=helper.getReadableDatabase();
String sql="delete from information where name='"+content_name+"'";
db.execSQL(sql);
// String arg[]={content_name};
// db.delete("information", "name=?",arg);
getData();
lv.setAdapter(new MyAdapter(FirstActivity.this,list));
// AdapterContextMenuInfo acm=(AdapterContextMenuInfo) item.getMenuInfo();
// list.remove(acm.position);
// adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), "已删除", 0).show();
break;
case R.id.share:
NotificationCompat.Builder notifition=new NotificationCompat.Builder(FirstActivity.this);
notifition.setSmallIcon(R.drawable.ic_launcher);
notifition.setContentTitle("新消息");
notifition.setContentText("点开可以查看详情哦");
Intent intent=new Intent(FirstActivity.this,Tongzhi.class);
intent.putExtra("name", content_name);
intent.putExtra("address", content_address);
intent.putExtra("love", content_love);
//延迟意图
PendingIntent pit=PendingIntent.getActivity(FirstActivity.this, 1, intent,PendingIntent.FLAG_ONE_SHOT);
notifition.setContentIntent(pit);
NotificationManager nma=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nma.notify(1,notifition.build());
break;
}
return super.onContextItemSelected(item);
}
}
第二个界面布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="信息"
android:textSize="26sp"/>
<Button
android:id="@+id/bt_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="完成"
android:onClick="click"
android:textSize="24sp"
android:layout_marginLeft="30dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"
android:textSize="22sp"/>
<EditText
android:id="@+id/et_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="22sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="住址:"
android:textSize="22sp"/>
<EditText
android:id="@+id/et_address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="22sp"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="爱好:"
android:textSize="22sp"/>
<CheckBox
android:id="@+id/cb_eat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="吃饭"
android:textSize="22sp"/>
<CheckBox
android:id="@+id/cb_sleep"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="睡觉"
android:textSize="22sp"/>
<CheckBox
android:id="@+id/cb_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="打豆豆"
android:textSize="22sp"/>
</LinearLayout>
第二个界面逻辑代码文件:
package mars.wangshouxue;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
public class SecondActivity extends Activity {
EditText et_name, et_address;
CheckBox cb_eat, cb_sleep, cb_play;
String name, address, like1="", like2="", like3="";
MyOpenHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
et_name = (EditText) findViewById(R.id.et_name);
et_address = (EditText) findViewById(R.id.et_address);
cb_eat = (CheckBox) findViewById(R.id.cb_eat);
cb_sleep = (CheckBox) findViewById(R.id.cb_sleep);
cb_play = (CheckBox) findViewById(R.id.cb_play);
cb_eat.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
like1 = cb_eat.getText().toString();
}
}
});
cb_sleep.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
like2 = cb_sleep.getText().toString();
}
}
});
cb_play.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
like3 = cb_eat.getText().toString();
}
}
});
helper=new MyOpenHelper(getApplicationContext());
}
public void click(View v) {
AlertDialog.Builder dialog = new AlertDialog.Builder(
SecondActivity.this);
dialog.setTitle("标题").setMessage("确定要提交吗?")
.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setNeutralButton("完成", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
name = et_name.getText().toString();
address = et_address.getText().toString();
String likes=like1+" "+like2+" "+like3;
SQLiteDatabase db=helper.getReadableDatabase();
String sql="insert into information values('"+name+"','"+address+"','"+likes+"')";
db.execSQL(sql);
Intent intent=new Intent();
finish();
}
});
dialog.create().show();
}
}
点开通知的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_tongzhi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"/>
</LinearLayout>
点开通知的逻辑代码文件:
package mars.wangshouxue;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class Tongzhi extends Activity{
TextView tv_tongzhi;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.tongzhi);
tv_tongzhi=(TextView) findViewById(R.id.tv_tongzhi);
Intent intent=getIntent();
String name=intent.getStringExtra("name");
String address=intent.getStringExtra("address");
String love=intent.getStringExtra("love");
String contents="姓名:"+name+" 住址:"+address+" 爱好:"+love;
NotificationManager nfm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nfm.cancelAll();
tv_tongzhi.setText(contents);
}
}
创建sqlite数据库类的逻辑代码文件:
package mars.wangshouxue;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MyOpenHelper extends SQLiteOpenHelper{
static String NAME="test.db";
static int VERSION=1;
public MyOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public MyOpenHelper(Context context) {
super(context, NAME, null, VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql="create table information(name varchar(10),address varchar(20),love varchar(30))";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
自定义适配器类逻辑代码文件:
package mars.wangshouxue;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class MyAdapter extends BaseAdapter{
Context context;
List<Map<String,Object>> list;
public MyAdapter(Context context, List<Map<String, Object>> list) {
super();
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder=null;
if(view==null)
{
view=LayoutInflater.from(context).inflate(R.layout.style,null);
holder=new ViewHolder();
holder.tv_name=(TextView) view.findViewById(R.id.tv_name);
holder.tv_address=(TextView) view.findViewById(R.id.tv_address);
holder.tv_like=(TextView) view.findViewById(R.id.tv_like);
view.setTag(holder);
}
else
{
holder=(ViewHolder) view.getTag();
}
String name=list.get(position).get("name").toString();
String address=list.get(position).get("address").toString();
String like=list.get(position).get("love").toString();
holder.tv_name.setText(name);
holder.tv_address.setText(address);
holder.tv_like.setText(like);
return view;
}
class ViewHolder
{
TextView tv_name;
TextView tv_address;
TextView tv_like;
}
}
自定义适配器类用到的样式布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22sp"
/>
<TextView
android:id="@+id/tv_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22sp"
android:layout_below="@id/tv_name"
/>
<TextView
android:id="@+id/tv_like"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_toRightOf="@id/tv_name"
android:layout_marginLeft="50dp"/>
</RelativeLayout>
菜单文件:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/delete"
android:title="删除"/>
<item
android:id="@+id/share"
android:title="分享"/>
</menu>