1.点击按钮能弹出对话框,并保存输入的号码
2.点击listview条目里的删除按钮,删除一个条目,自动更新UI
3.根据手指滚动listview到底端,自动加载数据
package com.example.mobilesafe;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.crypto.spec.IvParameterSpec;
import com.example.mobilesafe.bean.blackNumberBean;
import com.example.mobilesafe.db.dao.blackNumberDao;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;
public class blackNumberActivity extends Activity {
private int mode = 1;
private List<blackNumberBean> al;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_black_number);
initAdd();
initListView();
}
/**
* 展示黑名单号码
*/
private Handler mhHandler = new Handler() {
private myAdapter myAdapter;
public void handleMessage(android.os.Message msg) {
if (myAdapter == null) {
// 给listview设置适配器
myAdapter = new myAdapter();
lv_blackNumber_List.setAdapter(myAdapter);
} else {
// 更新listview
myAdapter.notifyDataSetChanged();
}
};
};
private ListView lv_blackNumber_List;
/**
* 初始化适配器
*/
private void initListView() {
lv_blackNumber_List = (ListView) findViewById(R.id.lv_blackNumber_List);
initData();
// 设置自动加载数据事件
lv_blackNumber_List.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE
&& lv_blackNumber_List.getMaxScrollAmount() >= al
.size() - 1) {
blackNumberDao dao = blackNumberDao
.getInstence(getApplicationContext());
List<blackNumberBean> query = dao.query(al.size());
al.addAll(query);
mhHandler.sendEmptyMessage(0);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
}
});
}
// 适配器类
private class myAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return al.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return al.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
// 优化适配器
if (convertView == null) {
// 得到控件
convertView = View.inflate(getApplicationContext(),
R.layout.blacknumber_item, null);
//
ViewHolder viewHolder = new ViewHolder();
viewHolder.phone = (TextView) convertView
.findViewById(R.id.tv_blackNumber_phone);
viewHolder.mode = (TextView) convertView
.findViewById(R.id.tv_blackNumber_mode);
viewHolder.del = (ImageView) convertView
.findViewById(R.id.iv_delBlackNumber);
convertView.setTag(viewHolder);
}
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
final blackNumberBean bnb = al.get(position);
viewHolder.phone.setText(bnb.phone);
String mode = "短信";
int intMode = Integer.parseInt(bnb.mode);
switch (intMode) {
case 1:
mode = "短信";
break;
case 2:
mode = "电话";
break;
case 3:
mode = "全部";
break;
default:
break;
}
viewHolder.mode.setText(mode);
// 设置listview每个条目里面的点击事件
viewHolder.del.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
blackNumberDao dao = blackNumberDao
.getInstence(getApplicationContext());
dao.delete(bnb.phone + "");
al.remove(position);
// 更新适配器,和显示数据
mhHandler.sendEmptyMessage(0);
}
});
return convertView;
}
}
private class ViewHolder {
public TextView phone;
public TextView mode;
public ImageView del;
}
/**
* 初始化显示数据
*/
private void initData() {
new Thread(new Runnable() {
@Override
public void run() {
// 第一次得到数据
blackNumberDao numberDao = blackNumberDao
.getInstence(getApplicationContext());
al = numberDao.query(0);
mhHandler.sendEmptyMessage(0);
}
}).start();
}
/**
* 点击按钮,添加号码到黑名单
*/
private void initAdd() {
Button bt_addBlackNumber = (Button) findViewById(R.id.bt_addBlackNumber);
bt_addBlackNumber.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
showDialog();
}
});
}
/**
* 展示对话框
*/
protected void showDialog() {
// 建立对话框
Builder builder = new AlertDialog.Builder(this);
final AlertDialog dialog = builder.create();
View view = View.inflate(getApplicationContext(),
R.layout.dialog_add_blacknumber, null);
dialog.setView(view, 0, 0, 0, 0);
dialog.show();
final EditText et_put_blackNumber = (EditText) view
.findViewById(R.id.et_put_blackNumber);
Button bt_submit_yes = (Button) view.findViewById(R.id.bt_submit_yes);
Button bt_submit_no = (Button) view.findViewById(R.id.bt_submit_no);
final RadioGroup rg_mode = (RadioGroup) view.findViewById(R.id.rg_mode);
rg_mode.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb_sms:
mode = 1;
Log.d("单选钮", 1 + "");
break;
case R.id.rb_phone:
mode = 2;
Log.d("单选钮", 2 + "");
break;
case R.id.rb_all:
mode = 3;
Log.d("单选钮", 3 + "");
break;
default:
break;
}
}
});
// 设置对话框确定按钮,保存数据,并关闭对话框
bt_submit_yes.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final String phone = et_put_blackNumber.getText().toString();
if (TextUtils.isEmpty(phone)) {
Toast.makeText(getApplicationContext(), "请输入号码", 0).show();
return;
}
blackNumberDao numberDao = blackNumberDao
.getInstence(getApplicationContext());
numberDao.insert(phone, mode + "");
blackNumberDao dao = blackNumberDao
.getInstence(getApplicationContext());
al = dao.query(0);
mhHandler.sendEmptyMessage(0);
dialog.dismiss();
}
});
// 设置取消按钮,关闭对话框
bt_submit_no.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}
}