关于Adapter对数据库的查询、删除操作

技术分享

技术分享


先来看清空号码操作(第一个选项是清空全部、以下的是popupwindow动态填充电话号码,为清空单个号码通话记录)

/** 查询到单个号码的Sipaccount*/
										if (mContactDailDetailAdapter != null) {
											String currSipaccount = phoneList
													.get(position - 1)
													.getSipaccount();

											/**从ui界面清楚该号码记录*/
											mContactDailDetailAdapter
											.deleVoipCall(
													currSipaccount,
													contactId);
											try {
												/**从数据库中删除*/
												SQLiteManager
														.getInstance()
														.deleteUserVoipCallsByContactID(
																contactId,
																currSipaccount);
												CASApplication
														.getInstance()
														.sendBroadcast(
																CASIntent.ACTION_CALL_LOG_INIT);
											} catch (ContactsException e) {
												e.printStackTrace();
											}
										
											/**最后刷新ui界面*/
											mContactDailDetailAdapter
													.notifyDataSetChanged();
										}


然后看adapter里面如何对清空进行操作的

	/**清空单个号码的通话记录*/
	public void deleVoipCall(String currSipaccount, long contactId) {
		if (currSipaccount != null) {
			List<CallsListItem> singlePhoneVoipCalls = null;
			try {
				/**从数据库中查询单个号码的通话记录,并且创建临时的list集合*/
				singlePhoneVoipCalls = SQLiteManager.getInstance()
						.getUserVoipCallsByContactId(contactId, currSipaccount,
								System.currentTimeMillis() + "",
								Integer.MAX_VALUE);
			} catch (ContactsException e) {
				e.printStackTrace();
			}
			/**判断非空进行操作,直接从展现ui界面的data数据中移除调即可*/
			if (singlePhoneVoipCalls != null) {
				if (userVoipCalls!=null) {
					userVoipCalls.removeAll(singlePhoneVoipCalls);
				}
			}
		} else {
			Toast.makeText(context, "非国鼎注册账号,暂无通话记录", 0).show();
		}
	}

	/**点击popup第一项调用的方法,直接clear数据集合*/
	public void deleAllVoipCall() {
		if (userVoipCalls!=null) {
			userVoipCalls.clear();
		}
	}
--------------------------------------接下来看查询操作---------------------------------------

		if (position == 0) {
					/**查看某个联系人下的所以号码的通话记录*/
					if (mContactDailDetailAdapter != null) {
						/**从adapter里面进行操作*/
						mContactDailDetailAdapter.queryAllVoipCall(contactId);
						mContactDailDetailAdapter.notifyDataSetChanged();
					} else {
						Toast.makeText(ContactDailDetailActivity.this,
								"通话记录列表为空", 0).show();
					}
				} else {
					// position大于0时
					if (mContactDailDetailAdapter != null) {

						if (phoneList != null && phoneList.size() > 0) {
							String currSipaccount = phoneList.get(position - 1)
									.getSipaccount();
							if (currSipaccount != null) {
								mContactDailDetailAdapter.queryVoipCall(
										contactId, currSipaccount);
								mContactDailDetailAdapter
										.notifyDataSetChanged();
							} else {
								/**如果不是正常号码,就直接清空ui界面*/
								mContactDailDetailAdapter.deleAllVoipCall();
								mContactDailDetailAdapter
										.notifyDataSetChanged();
							}

						}
					}
				}

接下来看adapter里面的查询方法操作

public class ContactDailDetailAdapter extends BaseAdapter {
	private List<Phone> phoneList;
	private Context context;
	private List<CallsListItem> userVoipCalls= new ArrayList<CallsListItem>();
	public static int pos = -1;
	private SlideListView mListView;
	
	public ContactDailDetailAdapter(List<Phone> phoneList, Context context,
			List<CallsListItem> userVoipCalls) {
		this.phoneList = phoneList;
		this.context = context;
		this.userVoipCalls = userVoipCalls;
	}

	/**查询某联系人所有号码的通话记录*/
	public void queryAllVoipCall(long contactId) {
		try {
			/**从数据库中获取该联系人所有号码的所有通话记录,并创建临时的通话记录集合*/
			List<CallsListItem> temp=SQLiteManager.getInstance().getUserVoipCallsByContactId(contactId,
					null, System.currentTimeMillis() + "",
					Integer.MAX_VALUE);
			//判断非空并清空展示ui界面的data数据集合
			if (userVoipCalls!=null) {
				userVoipCalls.clear();
			}
			//判断非空,并且将临时的记录添加到data数据集合
			if(temp != null)
			{
				userVoipCalls.addAll(temp);
			}
		} catch (ContactsException e) {
			e.printStackTrace();
		}
	}

	// 查看号码的通话记录--同查询所有号码的通话记录方法一样
	public void queryVoipCall(long contactId,String currSipaccount) {
		if (currSipaccount != null) {
			try {
				List<CallsListItem> temp=SQLiteManager.getInstance().getUserVoipCallsByContactId(contactId,
						currSipaccount, System.currentTimeMillis() + "",
						Integer.MAX_VALUE);
				if (userVoipCalls!=null) {
					userVoipCalls.clear();
				}
				if(temp != null)
				{
					userVoipCalls.addAll(temp);
				}
			} catch (ContactsException e) {
				e.printStackTrace();
			}
		}
	}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。