android分页查询垃圾短信数据库信息

来源:互联网 发布:javaweb网站源码 编辑:程序博客网 时间:2024/06/10 06:07

1、数据库

package com.example.yqqmobilesafe.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class RubishSmsDbHelper extends SQLiteOpenHelper {private static String DATABASE_NAME="rubishSms.db";private static int VERSION=2;public RubishSmsDbHelper(Context context) {super(context, DATABASE_NAME, null, VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create  table rubish_sms(_id integer primary key autoincrement ,phone_number text not null,sms_content text not null)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {db.execSQL("drop table  if exists rubish_sms");onCreate( db);}}

package com.example.yqqmobilesafe.db.dao;import java.util.ArrayList;import java.util.List;import org.apache.http.auth.NTCredentials;import android.R.integer;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import com.example.yqqmobilesafe.db.RubishSmsDbHelper;import com.example.yqqmobilesafe.domain.RubishSmsInfo;public class RubishSmsInfoDao {private boolean D=true;private RubishSmsDbHelper mDbHelper;public RubishSmsInfoDao(Context context) {mDbHelper=new RubishSmsDbHelper(context);}/** * 添加垃圾短信信息 * @param info */public void addSmsInfos(RubishSmsInfo info ){SQLiteDatabase database=null;try {database=mDbHelper.getWritableDatabase();database.execSQL("insert into rubish_sms(phone_number,sms_content) values(?,?)",new String[]{info.getPhoneNumber(),info.getSmsContent()});database.close();} catch (Exception e) {if(D){Log.i("RubishSmsInfoDao","数据库插入失败!!!");}}}/** * 删除垃圾短信 * @param info */public void deleteSmsInfos(RubishSmsInfo info ){SQLiteDatabase database=null;try {database=mDbHelper.getWritableDatabase();database.execSQL("delete  from rubish_sms where phone_number=?",new String[]{info.getPhoneNumber()});database.close();} catch (Exception e) {if(D){Log.i("RubishSmsInfoDao","数据库垃圾短信信息删除失败!!!");}}}/** * 分页查询 * @param number * @param offset * @return */public List<RubishSmsInfo> findInfosbyPage(int number,int offset){SQLiteDatabase database=null;Cursor cursor=null;List<RubishSmsInfo> infos=new ArrayList<RubishSmsInfo>();try {database=mDbHelper.getWritableDatabase();cursor=database.rawQuery("select phone_number,sms_content from rubish_sms  limit ? offset ?",new String[]{number+"",offset+""});while(cursor.moveToNext()){RubishSmsInfo info=new RubishSmsInfo();info.setPhoneNumber(cursor.getString(0));info.setSmsContent(cursor.getString(1));infos.add(info);info=null;}cursor.close();database.close();} catch (Exception e) {if(D){Log.i("RubishSmsInfoDao","数据库垃圾短信信息分页查询失败!!!");}}return infos;}/** * 获得记录的最大数目 * @return */public int getMaxCount(){SQLiteDatabase database=null;Cursor cursor=null;int num=0;try {database=mDbHelper.getReadableDatabase();cursor=database.rawQuery("select phone_number,sms_content from rubish_sms",null);while(cursor.moveToNext()){num++;}} catch (Exception e) {if(D){Log.i("RubishSmsInfoDao","数据库垃圾短信信息数量统计失败!!!");}}return num;}}


2、界面


package com.example.yqqmobilesafe;import java.util.List;import android.app.Activity;import android.app.Dialog;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import com.example.yqqmobilesafe.db.dao.RubishSmsInfoDao;import com.example.yqqmobilesafe.domain.RubishSmsInfo;public class RubishSmsActivity extends Activity {private ListView mRubishSms;//显示垃圾短信的列表private List<RubishSmsInfo> mInfos;//垃圾短信信息private RubishSmsInfosAdapter mAdapter;//垃圾短信信息适配器private int maxNum=5;//分页加载每页的最大数目private int offset=0;//偏移private int totalNums;//垃圾短信的总数目private RubishSmsInfoDao mRubishSmsInfoDao;//垃圾短信信息的数据库表操作对象private View loading;//数据加载提示public RubishSmsActivity() {}@Overrideprotected void onCreate(Bundle savedInstanceState) {init();setListener();super.onCreate(savedInstanceState);}private void init() {setContentView(R.layout.activity_rubish_sms);mRubishSms=(ListView) findViewById(R.id.lv_rubish_sms_content);mRubishSmsInfoDao=new RubishSmsInfoDao(getApplicationContext());totalNums=mRubishSmsInfoDao.getMaxCount();loading=findViewById(R.id.ll_rublish_sms_info_loading);}/** * 设置监听事件 */private void setListener(){//下拉列表的时候分页加载数据mRubishSms.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {switch (scrollState) {//在下拉列表空闲的时候显示数据case OnScrollListener.SCROLL_STATE_IDLE://获得分页加载的每页最大值int position=mRubishSms.getLastVisiblePosition();int total=0;if(mInfos!=null){// total=maxNum;total=mInfos.size();} if(position==total-1){//到达该分页加载的末尾位置offset+=maxNum;if(offset>totalNums){Toast.makeText(RubishSmsActivity.this,"数据已经加载完,没有更多的数据了...", 300).show();return;}//异步任务加载数据fillData();}break;}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {// TODO Auto-generated method stub}});fillData();//每个条目绑定监听mRubishSms.setOnItemClickListener(new OnItemClickListener() {View m_view=View.inflate(RubishSmsActivity.this,R.layout.show_rubish_sms_operation,null);@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {//获得条目对应的每个对象 Object object=mRubishSms.getItemAtPosition(position);if(object instanceof RubishSmsInfo){final RubishSmsInfo info=(RubishSmsInfo) object;//对对象的操作1、删除2、恢复到收件箱3、加入黑名单Dialog builder=new Dialog(RubishSmsActivity.this);builder.setTitle("提示");builder.setContentView(m_view);//删除((TextView)m_view.findViewById(R.id.tv_delete)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mInfos.remove(info);if(mRubishSmsInfoDao==null){mRubishSmsInfoDao=new RubishSmsInfoDao(getApplicationContext());}mRubishSmsInfoDao.deleteSmsInfos(info);if(mAdapter==null){mAdapter=new RubishSmsInfosAdapter();mRubishSms.setAdapter(mAdapter);}else{mAdapter.notifyDataSetChanged();}}});//恢复到收件箱((TextView)m_view.findViewById(R.id.tv_recovery_sms)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {}});//加入黑名单((TextView)m_view.findViewById(R.id.tv_add_black_number)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {}});builder.show();}}});}/** * 异步任务给列表加载数据 */private void fillData(){new AsyncTask<Void,Void,Void>(){@Overrideprotected void onPreExecute() {loading.setVisibility(View.VISIBLE);super.onPreExecute();}@Overrideprotected void onPostExecute(Void result) {loading.setVisibility(View.INVISIBLE);//刷新界面列表数据if(mAdapter==null){mAdapter=new RubishSmsInfosAdapter();mRubishSms.setAdapter(mAdapter);}else{mAdapter.notifyDataSetChanged();}super.onPostExecute(result);}@Overrideprotected Void doInBackground(Void... params) {if(mInfos==null){mInfos=mRubishSmsInfoDao.findInfosbyPage(maxNum, offset);}else{mInfos.addAll(mRubishSmsInfoDao.findInfosbyPage(maxNum, offset));}try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}}.execute();}/** * 垃圾短信显示的数据适配器 * @author yqq * */private class RubishSmsInfosAdapter extends BaseAdapter{@Overridepublic int getCount() {return mInfos.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn mInfos.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view=null;ViewHolder holder=null;if(convertView!=null&& convertView instanceof LinearLayout){view=convertView;holder=(ViewHolder) view.getTag();}else{holder=new ViewHolder();view=View.inflate(RubishSmsActivity.this,R.layout.rubish_sms_info_item,null);holder.tvPhoneNumber=(TextView) view.findViewById(R.id.tv_phone_number);//holder.tvDate=(TextView) view.findViewById(R.id.tv_received_date);holder.tvContent=(TextView) view.findViewById(R.id.tv_rubish_sms_content);view.setTag(holder);}holder.tvPhoneNumber.setText("电话号码:"+mInfos.get(position).getPhoneNumber());//holder.tvDate.setText(mInfos.get(position).getReceivedDate());holder.tvContent.setText("短信内容:"+mInfos.get(position).getSmsContent());return view;}}static class ViewHolder{TextView tvPhoneNumber;//电话号码显示//TextView tvDate;//日期显示TextView tvContent;//短信内容显示}}


0 0