1 package com.hanqi.blacklist;
2
3 import android.app.AlertDialog;
4 import android.content.DialogInterface;
5 import android.os.Bundle;
6 import android.support.v7.app.AppCompatActivity;
7 import android.text.InputType;
8 import android.view.ContextMenu;
9 import android.view.MenuItem;
10 import android.view.View;
11 import android.view.ViewGroup;
12 import android.widget.AdapterView;
13 import android.widget.BaseAdapter;
14 import android.widget.EditText;
15 import android.widget.ListView;
16 import android.widget.TextView;
17 import android.widget.Toast;
18
19 import com.hanqi.blacklist.com.hanqi.blacklist.orm.BlacList;
20 import com.hanqi.blacklist.com.hanqi.blacklist.orm.BlackListDAO;
21
22 import java.util.ArrayList;
23
24 public class MainActivity extends AppCompatActivity {
25
26 ListView lv_1;
27 //数据访问对象
28 BlackListDAO bld = new BlackListDAO(this);
29 //数据集合
30 ArrayList<BlacList> alb;
31
32 BLAdapter bla;
33
34 //长按数据的索引
35 int index;
36
37 @Override
38 protected void onCreate(Bundle savedInstanceState) {
39 super.onCreate(savedInstanceState);
40 setContentView(R.layout.activity_main);
41 lv_1 = (ListView)findViewById(R.id.lv_1);
42 //增加上下文菜单,设置创建上下文菜单的监听器
43 lv_1.setOnCreateContextMenuListener(this);
44 //获取数据集合
45 alb = bld.getAll();
46 //显示数据
47 //adapter
48 bla = new BLAdapter();
49 lv_1.setAdapter(bla);
50 }
51 //重写创建上下文菜单的方法
52 @Override
53 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
54 super.onCreateContextMenu(menu, v, menuInfo);
55 menu.add(0, 1, 1, "修改");
56 menu.add(0, 2, 2, "删除");
57 //获取长按的数据信息
58 //1.得到菜单信息
59 AdapterView.AdapterContextMenuInfo acmi =
60 (AdapterView.AdapterContextMenuInfo)menuInfo;
61 //2.得到数据在集合中的索引
62 index = acmi.position;
63 }
64 //响应菜单点击的回调方法
65 @Override
66 public boolean onContextItemSelected(MenuItem item) {
67
68 switch (item.getItemId())
69 {
70 case 1:
71 //修改
72 final EditText editText = new EditText(this);
73 editText.setHint("输入电话号码");
74 editText.setInputType(InputType.TYPE_CLASS_PHONE);
75 editText.setText(alb.get(index).getPhoneNumber());
76 new AlertDialog.Builder(this)
77 .setTitle("修改")
78 .setView(editText)
79 .setCancelable(false)
80 .setNegativeButton("取消", null)
81 .setPositiveButton("确定", new DialogInterface.OnClickListener() {
82 @Override
83 public void onClick(DialogInterface dialog, int which) {
84 // BlacList blacList = new BlacList(alb.get(index).getId(),editText.getText().toString());
85 // bld.update(blacList);
86 // alb = bld.getAll();
87 // bla.notifyDataSetChanged();
88 //1.得到新数据的实体类
89 //赋值:
90 // 1)传值,复制新的值再传递,值类型;
91 // 2)传址,传递的是内存的地址,指向同一个对象,引用类型
92 BlacList blaclist = alb.get(index);
93 blaclist.setPhoneNumber(editText.getText().toString());
94 //2.调用DAO的update()
95 if (bld.update(blaclist)>0)
96 {
97 Toast.makeText(MainActivity.this, "修改成功", Toast.LENGTH_SHORT).show();
98
99 bla.notifyDataSetChanged();
100 }
101 else
102 {
103 Toast.makeText(MainActivity.this, "修改失败", Toast.LENGTH_SHORT).show();
104 }
105 }
106 })
107 .show();
108 break;
109 case 2:
110 //添加删除确认对话框
111 //删除
112 new AlertDialog.Builder(this)
113 .setTitle("确认对话框")
114 .setMessage("确认删除么?")
115 .setNegativeButton("取消", null)
116 .setPositiveButton("确认", new DialogInterface.OnClickListener() {
117 @Override
118 public void onClick(DialogInterface dialog, int which) {
119 bld.delete(alb.get(index).getId());
120 Toast.makeText(MainActivity.this, "删除成功", Toast.LENGTH_SHORT).show();
121 //alb = bld.getAll();
122 alb.remove(index);
123 bla.notifyDataSetChanged();
124 }
125 })
126 .show();
127
128 break;
129 }
130 return super.onContextItemSelected(item);
131 }
132
133 //BaseAdapter的实现类
134 class BLAdapter extends BaseAdapter
135 {
136 @Override
137 public int getCount() {
138 return alb.size();
139 }
140
141 @Override
142 public Object getItem(int position) {
143 return alb.get(position);
144 }
145
146 @Override
147 public long getItemId(int position) {
148 return alb.get(position).getId();
149 }
150
151 @Override
152 public View getView(int position, View convertView, ViewGroup parent) {
153 //得到数据
154 BlacList blacList = alb.get(position);
155 //得到视图
156 if (convertView == null)
157 {
158 //构建视图
159 convertView = new TextView(MainActivity.this);
160 }
161 //视图和数据做显示匹配
162 TextView textView = (TextView)convertView;
163 textView.setTextSize(20);
164 textView.setHeight(80);
165 textView.setText(blacList.getPhoneNumber());
166 return textView;
167 }
168 }
169 //添加
170 public void add_onClick(View v)
171 {
172 //自定义对话框
173 final EditText editText = new EditText(this);
174 editText.setHint("输入电话号码");
175 editText.setInputType(InputType.TYPE_CLASS_PHONE);
176 //构建对话框
177 new AlertDialog.Builder(this)
178 .setTitle("添加黑名单")
179 .setView(editText)
180 .setCancelable(false)
181 .setNegativeButton("取消", null)
182 .setPositiveButton("保存", new DialogInterface.OnClickListener() {
183 @Override
184 public void onClick(DialogInterface dialog, int which) {
185 //向数据库保存
186 //1.定义实体类
187 BlacList blacList = new BlacList(editText.getText().toString());
188 //2.通过DAO插入数据
189 long l = bld.insert(blacList);
190 if (l > 0) {
191 Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
192 //更新list
193 //alb = bld.getAll();
194 blacList.setId(l);
195 alb.add(0,blacList);
196 //刷新列表
197 bla.notifyDataSetChanged();
198 }
199 else {
200 Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
201 }
202 }
203 })
204 .show();
205 }
206 }