安卓:一个简单的综合使用(1-3周),sqlite,listview,自定义适配器,菜单,对话框,通知.....

第一个界面布局文件:

<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>











  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值