黑名單

package com.example.wang.blacklist;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.InputType;
import android.view.ContextMenu;
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.TextView;
import android.widget.Toast;

import com.example.wang.blacklist.com.hanqi.blacklist.orm.BlackList;
import com.example.wang.blacklist.com.hanqi.blacklist.orm.BlackListDAO;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    ListView lv_1;

    //數據訪問對象
    BlackListDAO bld=new BlackListDAO(this);


    //數據集合
    ArrayList<BlackList> alb;

    BLAdapter bla;


    //長按的數據的索引

    int index;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv_1=(ListView)findViewById(R.id.lv_1);


        //獲取數據集合
        alb=bld.getAll();

        //顯示數據
        //adapter

        bla=new BLAdapter();
        lv_1.setAdapter(bla);

        //增長上下文菜單,設置建立菜單的監聽器
        lv_1.setOnCreateContextMenuListener(this);

    }

    //重寫建立上下文菜單的方法
    @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, "刪除");

        //獲取長按的數據信息
        //1 獲得菜單信息
        AdapterView.AdapterContextMenuInfo acmi =(AdapterView.AdapterContextMenuInfo)menuInfo;

        //2 獲得數據在集合中的索引
        index=acmi.position;
    }

    //響應菜單點擊的回調方法


    @Override
    public boolean onContextItemSelected(MenuItem item) {

        switch (item.getItemId())
        {
            case 1:
                //修改

                final EditText et=new EditText(this);
                et.setText(alb.get(index).getPhoneNumber());
                AlertDialog a=new AlertDialog.Builder(this)
                        .setTitle("修改黑名單")
                        .setView(et)
                        .setNegativeButton("取消", null)
                        .setPositiveButton("保存", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                                //1.獲得新數據的實體類
                                //賦值 1)傳值; 複製新的值再傳遞,應用於值類型
                                //    2)傳址  傳遞的是內存地址,指向同一個對象,應用於引用類型
                                //1.1方法1
                                //BlackList blackList = new BlackList(alb.get(index).getId(),
                                //       et.getText().toString());

                                //1.2 方法2
                                BlackList blackList = alb.get(index);
                                blackList.setPhoneNumber(et.getText().toString());
                                //2-調用DAO的update方法
                                if (bld.updata(blackList) > 0) {
                                    Toast.makeText(MainActivity.this, "修改爲功", Toast.LENGTH_SHORT).show();
                                } else {
                                    Toast.makeText(MainActivity.this, "修改失敗", Toast.LENGTH_SHORT).show();
                                }

                                //3-刷新ListView
                                //方法1
                                // alb=bld.getAll();
                                //方法2
//                                alb.remove(index);
//                                alb.add(index, blackList);

                                //刷新列表
                                bla.notifyDataSetChanged();
                            }
                        })
                        .show();

                break;

            case 2:
                //刪除確認對話框
                new  AlertDialog.Builder(this)
                        .setTitle("肯定要刪除?")
                        .setPositiveButton("肯定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                                //刪除
                                if ( bld.delete(alb.get(index).getId())>0)
                                {
                                    Toast.makeText(MainActivity.this, "刪除成功", Toast.LENGTH_SHORT).show();
                                    //更新List
                                    //方法1
                                    //alb=bld.getAll();

                                    //方法2
                                    alb.remove(index);

                                    //刷新列表
                                    bla.notifyDataSetChanged();
                                }
                                else
                                {
                                    Toast.makeText(MainActivity.this, "刪除失敗", Toast.LENGTH_SHORT).show();
                                }

                            }
                        })
                        .setNegativeButton("取消",null)
                        .show();



                break;
        }

        return super.onContextItemSelected(item);
    }

    //添加按鈕的監聽器
    public void add_OnClick(View v)
    {
        //自定義對話框
        final EditText editText=new EditText(this);
        editText.setHint("輸入電話號碼");
        editText.setInputType(InputType.TYPE_CLASS_PHONE);

        //構建對話框
        AlertDialog al=new AlertDialog.Builder(this)
                .setTitle("添加黑名單")
                .setView(editText)
                .setCancelable(false)
                .setNegativeButton("取消", null)
                .setPositiveButton("保存", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        //向數據庫保存
                        //1-定義實體類
                        BlackList blackList = new BlackList(editText.getText().toString());

                        //2-經過DAO插入數據
                        Long l=bld.insert(blackList);

                        if (l > 0) {
                            Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();

                            //更新List
                            //方法1
                            //alb=bld.getAll();

                            //方法2
                            blackList.setId(l);
                            alb.add(0,blackList);

                            //刷新列表
                            bla.notifyDataSetChanged();


                        } else {
                            Toast.makeText(MainActivity.this, "保存失敗", Toast.LENGTH_SHORT).show();
                        }
                    }
                })
                .show();


    }

    //BaseAdapter 的實現類
    class  BLAdapter extends BaseAdapter
    {
        @Override
        public int getCount() {
            return alb.size();
        }

        @Override
        public Object getItem(int position) {
            return alb.get(position);
        }

        @Override
        public long getItemId(int position) {
            return alb.get(position).getId();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            //獲得數據
            BlackList blackList=alb.get(position);

            //獲得視圖
            if (convertView==null)
            {
                //構建視圖
                convertView=new TextView(MainActivity.this);
            }

            //視圖和數據作顯示匹配
           TextView textView=(TextView)convertView;

            textView.setText(blackList.getPhoneNumber());

            textView.setTextSize(20);

            textView.setHeight(80);

            return convertView;
        }
    }
}
MainActivity
package com.example.wang.blacklist.com.hanqi.blacklist.orm;



//黑名單表的實體類
public class BlackList {

    private  long id;

    private  String phoneNumber;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }

    public BlackList(long id, String phoneNumber) {
        this.id = id;
        this.phoneNumber = phoneNumber;
    }

    public BlackList(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}
BlackList
package com.example.wang.blacklist.com.hanqi.blacklist.orm;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * Created by wang on 2016/6/7.
 */
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 t_blacklist (_id  INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +
                "phone_number VARCHAR(20))";
        db.execSQL(sql);

        Log.e("TAG", "表建立成功");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
DBHelper
package com.example.wang.blacklist.com.hanqi.blacklist.orm;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import java.util.ArrayList;

/**
 * Created by wang on 2016/6/6.
 */

//數據庫操做類
public class BlackListDAO {

    private  DBHelper dh;

    private  final String  TABLENAME="t_blacklist";

    public BlackListDAO(Context context)
    {
       // this.context=context;

        dh=new DBHelper(context);
    }

    ////傳入參數:實體類的實例
    public long insert(BlackList blackList)
    {
        long rtn=0;
        //鏈接數據庫
        SQLiteDatabase sd=dh.getWritableDatabase();

        //執行insert語句
        //insert into t_blacklist(phone_number) values ()

        ContentValues cv=new ContentValues();

        cv.put("phone_number",blackList.getPhoneNumber());

        rtn=sd.insert(TABLENAME,null,cv);

        sd.close();
        return rtn;
    }

    //
    public int delete(long id)
    {
        int rtn=0;

        //delete from t_blacklist where _id=?

        SQLiteDatabase sd=dh.getWritableDatabase();

        rtn=sd.delete(TABLENAME,"_id=?",new String[]{id+""});

        sd.close();
        return rtn;
    }

    //
    public int updata(BlackList blackList)
    {
        int rtn=0;
        //updata t_blacklist set phone_number=? where _id=?
        SQLiteDatabase sd=dh.getWritableDatabase();

        ContentValues cv=new ContentValues();

        cv.put("phone_number",blackList.getPhoneNumber());

        rtn=sd.update(TABLENAME,cv,"_id=?",new String[]{blackList.getId()+""});

        Log.e("TAG", "jieguo= + xiugau"+blackList.getPhoneNumber());

        sd.close();
        return  rtn;
    }
    ////返回查詢結果
    public  ArrayList<BlackList> getAll()
    {
       ArrayList<BlackList>  blackLists=new ArrayList<>();

        //鏈接數據庫
        SQLiteDatabase sd=dh.getWritableDatabase();
        //select * from t_blacklist

        //查詢以後獲得遊標結果集
        Cursor cursor=sd.query(TABLENAME, null, null, null, null, null, "_id desc");

        //遍歷結果集
        while (cursor.moveToNext())
        {
            //1.把數據轉成實體類的實例
            BlackList bl=new BlackList(cursor.getLong(0),cursor.getString(1));

            //2.把實例放在集合裏

            blackLists.add(bl);

          //  Log.e("TAG", "blackL" + cursor.getString(1));
        }

        cursor.close();

        sd.close();
        //返回這個集合
        return blackLists;
    }



}
BlackListDAO
<?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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.wang.blacklist.MainActivity"
    android:orientation="vertical">

   <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="add_OnClick"/>

</LinearLayout>
activity_main

相關文章
相關標籤/搜索