android分頁查詢垃圾簡訊資料庫資訊

來源:互聯網
上載者:User

標籤:資料庫分頁查詢   android   資料庫   介面   非同步載入   

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;//簡訊內容顯示}}


android分頁查詢垃圾簡訊資料庫資訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.