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