package com.hanqi.blacklist.com.hanqi.blacklist; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.PersistableBundle; import android.text.InputType; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import com.hanqi.blacklist.R; import java.util.ArrayList; public class Main_Activity extends Activity { ListView lv_1; ArrayList<BlackList> arraylist; BlackListDAO bld=new BlackListDAO(this); MyAdapter adapter; int index; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv_1=(ListView)findViewById(R.id.lv_1); lv_1.setOnCreateContextMenuListener(this); arraylist=bld.getAll(); adapter=new MyAdapter(); lv_1.setAdapter(adapter); } public void bt_OnClick(View v) { final EditText editText=new EditText(this); editText.setHint("输入电话号码"); editText.setInputType(InputType.TYPE_CLASS_PHONE); new AlertDialog.Builder(this) .setTitle("添加黑名单") .setView(editText) .setCancelable(false) .setPositiveButton("保存", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { BlackList blackList = new BlackList(editText.getText().toString()); long l = new BlackListDAO(Main_Activity.this).insert(blackList); if (l > 0) { Toast.makeText(Main_Activity.this, "保存成功", Toast.LENGTH_SHORT).show(); arraylist.add(0,blackList); adapter.notifyDataSetChanged(); } else { Toast.makeText(Main_Activity.this, "保存失败", Toast.LENGTH_SHORT).show(); } } }) .setNegativeButton("取消", null) .show(); } //上下文菜单 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(0, 1, 1, "修改"); menu.add(0, 2, 2, "删除") ; AdapterView.AdapterContextMenuInfo m= (AdapterView.AdapterContextMenuInfo)menuInfo; index=m.position; } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: final EditText et=new EditText(this); et.setText(arraylist.get(index).getPhone()); et.setHint("输入电话号码"); et.setInputType(InputType.TYPE_CLASS_PHONE); new AlertDialog.Builder(this) .setTitle("修改联系人信息") .setView(et) .setNegativeButton("取消", null) .setPositiveButton("修改", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { BlackList blackList=arraylist.get(index); blackList.setPhone(et.getText().toString()); long l = bld.update(blackList); if (l > 0) { Toast.makeText(Main_Activity.this, "修改成功", Toast.LENGTH_SHORT).show(); adapter.notifyDataSetChanged(); } } }) .show(); break; case 2: new AlertDialog.Builder(this) .setTitle("确认删除么?") .setCancelable(false) .setNegativeButton("取消",null) .setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { long l = bld.delete(arraylist.get(index).getId()); if (l > 0) { arraylist.remove(index); Toast.makeText(Main_Activity.this, "删除成功", Toast.LENGTH_SHORT).show(); } adapter.notifyDataSetChanged(); } }) .show(); break; } return super.onContextItemSelected(item); } class MyAdapter extends BaseAdapter { @Override public int getCount() { return arraylist.size(); } @Override public Object getItem(int position) { return arraylist.get(position); } @Override public long getItemId(int position) { return arraylist.get(position).getId(); } @Override public View getView(int position, View convertView, ViewGroup parent) { BlackList blacklist=arraylist.get(position); if (convertView==null) { convertView=View.inflate(Main_Activity.this,R.layout.blacklist_layout,null); } EditText et_phone=(EditText)convertView.findViewById(R.id.et_phone); et_phone.setText(blacklist.getPhone()); return convertView; } } }
package com.hanqi.blacklist.com.hanqi.blacklist; public class BlackList { private long id; private String phone; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public BlackList(long id, String phone) { this.id = id; this.phone = phone; } public BlackList(String phone) { this.phone = phone; } }
package com.hanqi.blacklist.com.hanqi.blacklist; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import java.util.ArrayList; public class BlackListDAO { private DBHelper dh; private String TABLE_NAME="t_blacklist"; public BlackListDAO(Context context) { dh=new DBHelper(context); } public long insert(BlackList blackList) { long rtn=0; SQLiteDatabase sd=dh.getReadableDatabase(); ContentValues cv=new ContentValues(); cv.put("phone_number",blackList.getPhone()); rtn=sd.insert(TABLE_NAME, null, cv); sd.close(); return rtn; } public int delete(long id) { int rtn=0; SQLiteDatabase sd=dh.getReadableDatabase(); rtn= sd.delete(TABLE_NAME,"_id=?",new String[]{id+""}); sd.close(); return rtn; } public int update(BlackList blackList) { int rtn=0; SQLiteDatabase sd=dh.getReadableDatabase(); ContentValues cv=new ContentValues(); cv.put("phone_number",blackList.getPhone()); rtn=sd.update(TABLE_NAME,cv,"_id=?",new String[]{blackList.getId()+""}); sd.close(); return rtn; } public ArrayList<BlackList> getAll() { SQLiteDatabase sd=dh.getReadableDatabase(); ArrayList<BlackList> blackLists=new ArrayList<>(); Cursor c=sd.query(TABLE_NAME, null, null, null, null, null, "_id desc"); while (c.moveToNext()) { BlackList bl=new BlackList(c.getLong(0),c.getString(1)); blackLists.add(bl); } c.close(); sd.close(); return blackLists; } }
package com.hanqi.blacklist.com.hanqi.blacklist; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context) { super(context,"blacklist.db",null,1); } @Override public void onCreate(SQLiteDatabase db) { String sql= "CREATE TABLE blacklist (_id " + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + "phone_number INTEGER)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
<?xml version="1.0" encoding="utf-8"?> <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" tools:context="com.hanqi.blacklist.MainActivity"> <ListView android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:id="@+id/lv_1"></ListView> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="添加黑名单" android:onClick="bt_OnClick"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="电话:" android:id="@+id/tv_phone"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="20dp" android:id="@+id/et_phone"/> </LinearLayout> </LinearLayout>