黑名单号码页面

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();
			}
		});
	}
}

猜你喜欢

转载自blog.csdn.net/sinat_40387150/article/details/80888997