Android--模拟黑名单

思路:没什么特别的思路,就是进行CRUD的操作顺序是先操作数据库,再操作列表,在通知更新

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemLongClickListener {


    private ListView lv_main;
    private MyBaseAdapter adapter;
    private List<UserBean> userBeans;
    private UserDAO dao;

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

        lv_main=(ListView)findViewById(R.id.lv_main);
        adapter=new MyBaseAdapter();
        dao=new UserDAO(this);
        userBeans=dao.getAll();
        lv_main.setAdapter(adapter);
        //lv_main.setOnCreateContextMenuListener(this);
        lv_main.setOnItemLongClickListener(this);
    }



//    private int posi;
//    @Override
//    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
//        super.onCreateContextMenu(menu, v, menuInfo);
//        menu.add(0,1,0,"更新");
//        menu.add(0,2,0,"删除");
          //得到长按position
//        AdapterView.AdapterContextMenuInfo info=(AdapterView.AdapterContextMenuInfo) menuInfo;
//        posi=info.position;
//    }
//
//    @Override
//    public boolean onContextItemSelected(@NonNull MenuItem item) {
//        UserBean userBean=userBeans.get(posi);
//        switch (item.getItemId()){
//            case 1:
//                Toast.makeText(this,""+posi,Toast.LENGTH_SHORT).show();
//                break;
//            case 2:
//                //删除数据库
//                dao.delete(userBean.getId());
//                //删除表
//                userBeans.remove(posi);
//                //通知更新
//                adapter.notifyDataSetChanged();
//                break;
//        }
//        return super.onContextItemSelected(item);
//    }

    public void add(View view){
        final View inflate = View.inflate(this, R.layout.add_dialog, null);
        new AlertDialog.Builder(this)
                .setView(inflate)
                .setPositiveButton("添加", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //保存到表中
                        EditText editText=(EditText)inflate.findViewById(R.id.et_add);
                        String str=editText.getText().toString();
                        UserBean ub = new UserBean(str, -1);
                        dao.add(ub);
                        //将数据加入到List中
                        //userBeans.add(ub);
                        userBeans.add(0,ub);
                        //通知baseadapter更新
                        adapter.notifyDataSetChanged();
                    }
                })
                .setNegativeButton("取消", null)
                .show();
    }

    @Override
    public boolean onItemLongClick(final AdapterView<?> parent, View view, final int position, long id) {
        new AlertDialog.Builder(this)
                .setPositiveButton("更新", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        showUpdate(position);
                    }
                })
                .setNegativeButton("删除", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        UserBean userBean=userBeans.get(position);
                        dao.delete(userBean.getId());
                        userBeans.remove(position);
                        adapter.notifyDataSetChanged();
                    }
                })
                .show();
        return true;
    }

    public void showUpdate(final int position){
        final View inflate = View.inflate(this, R.layout.add_dialog, null);
        new AlertDialog.Builder(this)
                .setView(inflate)
                .setPositiveButton("修改", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        EditText editText=(EditText) inflate.findViewById(R.id.et_add);
                        String str=editText.getText().toString();

                        UserBean user=userBeans.get(position);
                        user.setNumber(str);
                        dao.update(user);

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


    public class MyBaseAdapter extends BaseAdapter{
        @Override
        public int getCount() {
            return userBeans.size();
        }
        @Override
        public Object getItem(int position) {
            return userBeans.get(position);
        }
        @Override
        public long getItemId(int position) {
            return 0;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if(convertView==null){
                convertView = View.inflate(MainActivity.this, R.layout.user_item, null);
            }
            UserBean userBean=userBeans.get(position);
            TextView textView=(TextView)convertView.findViewById(R.id.number);
            textView.setText(userBean.getNumber());
            return convertView;
        }
    }
}

Dao:
对于这个也没什么特别的想法,就是构造方法的参数要注意点。

public class UserDAO {

    private DBHelper dbHelper;

    /**
     * 增
     */

    public UserDAO(Context context){
        dbHelper=new DBHelper(context);

    }


    public void add(UserBean userBean){
        //得到链接
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        //执行sql
        ContentValues values=new ContentValues();
        values.put("number",userBean.getNumber());
        long  id= database.insert("user_number", null, values);
        //这里因为上面的返回值id,是数据库的自增量,返回数据库的id
        userBean.setId((int)id);
        database.close();
    }
    /**
     * 删:根据id
     */
    public void delete(int id){
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        database.delete("user_number","_id=?",new String[]{id+""});
        database.close();
    }
    /**
     * 更新记录
     */
    public void update(UserBean userBean){
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        ContentValues values=new ContentValues();
        values.put("number",userBean.getNumber());
        database.update("user_number",values,"_id="+userBean.getId(),null);
        database.close();
    }

    /**
     * 查询所有
     */
    public List<UserBean> getAll(){
        List<UserBean> list=new ArrayList<UserBean>();
        SQLiteDatabase database=dbHelper.getReadableDatabase();
        Cursor cursor=database.query("user_number",null,null,null,null,null,"_id desc");
        while(cursor.moveToNext()){
            int id=cursor.getInt(0);
            String number=cursor.getString(1);
            list.add(new UserBean(number, id));
        }
        cursor.close();
        database.close();
        return list;
    }
}
发布了117 篇原创文章 · 获赞 1 · 访问量 7066

猜你喜欢

转载自blog.csdn.net/qq_43616001/article/details/104316891
今日推荐