Android實現(xiàn)可復用的篩選頁面
更新時間:2019年06月25日 14:26:52 作者:free5156
這篇文章主要為大家詳細介紹了Android實現(xiàn)可復用的篩選頁面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了Android實現(xiàn)可復用的篩選頁面的具體代碼,供大家參考,具體內(nèi)容如下
窗口代碼
/** * 篩選頁面 * 1.將用戶的輸入轉(zhuǎn)換成sql語句 * 2.涉及到精確查詢和模糊查詢 * 3.提交數(shù)據(jù)之后需要刷新列表 */ public class UserFilterActivity extends AppCompatActivity implements View.OnClickListener { private List<ImageView> imageViewList; private Context mContext; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_filter); ButterKnife.bind(this); initView(); initData(); initListener(); } private void initData() { mContext = this; title.setText("篩選"); //將所有的ImageView實例存進list imageViewList = new ArrayList<>(); imageViewList.add(ivNumber); imageViewList.add(ivMobile); imageViewList.add(ivWorkNumber); imageViewList.add(ivSysName); imageViewList.add(ivPost); imageViewList.add(ivTelephone); imageViewList.add(ivEmail); //初始化ImageView,把狀態(tài)放進tag里面 // 所有的ImageView都是未選中狀態(tài) for (ImageView imageView : imageViewList) { imageView.setTag(false); } } private void initView() { editTv.setVisibility(View.VISIBLE); editTv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_send_black_24dp, 0, 0, 0); } private void initListener() { //給ImageView設置監(jiān)聽 for (ImageView imageView : imageViewList) { imageView.setOnClickListener(this); } //單選按鈕設置監(jiān)聽 rgStatus.setOnCheckedChangeListener((group, checkedId) -> { if (checkedId == R.id.rb_status_off) { offTime.setVisibility(View.VISIBLE); line.setVisibility(View.VISIBLE); } else { offTime.setVisibility(View.GONE); line.setVisibility(View.GONE); } }); titleLeft.setOnClickListener(this); editTv.setOnClickListener(this); tvUserName.setOnClickListener(this); tvCreator.setOnClickListener(this); } @Override public void onClick(View view) { if (view.getId() == R.id.title_left) { finish(); } if (view.getId() == R.id.edit_tv) { submit(); } //選擇用戶,這里是多選 if (view.getId() == R.id.tv_user_name) { Intent intent = new Intent(mContext, UserSelectActivity.class); intent.putExtra("isMultipleEnable", true); startActivityForResult(intent, 15476); } //選擇用戶,這里是單選 if (view.getId() == R.id.tv_creator) { Intent intent = new Intent(mContext, UserSelectActivity.class); startActivityForResult(intent, 13685); } //點擊checkbox的動作 switch (view.getId()) { case R.id.iv_number: case R.id.iv_work_number: case R.id.iv_sys_name: case R.id.iv_post: case R.id.iv_mobile: case R.id.iv_telephone: case R.id.iv_email: switchExact((ImageView) view); } } //拼接sql語句,并回傳給上一個頁面然后結(jié)束此頁 //字段僅供參考 public void submit() { StringBuilder sb = new StringBuilder("where"); String number = etNumber.getText().toString(); String workNumber = etWorkNumber.getText().toString(); String sysName = etSysName.getText().toString(); String post = etPost.getText().toString(); String mobile = etMobile.getText().toString(); String telePhone = etTelePhone.getText().toString(); String email = etEmail.getText().toString(); if (!TextUtils.isEmpty(number)) { String[] arr = number.split(","); if ((boolean) ivNumber.getTag()) { sb.append(" and userID in (").append(stringToString(arr)).append(")"); } else { for (int i = 0; i < arr.length; i++) { if (i == 0) { sb.append(" and (left(userId, ").append(arr[i].length()).append(") = '").append(arr[i]).append("'"); } else { sb.append(" or left(userId, ").append(arr[i].length()).append(") = '").append(arr[i]).append("'"); } } sb.append(")"); } } if (!TextUtils.isEmpty(sysName)) { String[] arr = sysName.split(","); if ((boolean) ivSysName.getTag()) { sb.append(" and userName in (").append(stringToString(arr)).append(")"); } else { for (int i = 0; i < arr.length; i++) { if (i == 0) { sb.append(" and (userName like '|").append(arr[i]).append("|'"); } else { sb.append(" or userName like '|").append(arr[i]).append("|'"); } } sb.append(")"); } } if (!TextUtils.isEmpty(workNumber)) { String[] arr = workNumber.split(","); if ((boolean) ivWorkNumber.getTag()) { sb.append(" and workNumber in (").append(stringToString(arr)).append(")"); } else { for (int i = 0; i < arr.length; i++) { if (i == 0) { sb.append(" and (workNumber like '").append(arr[0]).append("|'"); } else { sb.append(" or workNumber like '").append(arr[i]).append("|'"); } } sb.append(")"); } } if (!TextUtils.isEmpty(post)) { String[] arr = post.split(","); if ((boolean) ivPost.getTag()) { sb.append(" and workPos in (").append(stringToString(arr)).append(")"); } else { for (int i = 0; i < arr.length; i++) { if (i == 0) { sb.append(" and (workPost like '|").append(arr[0]).append("|'"); } else { sb.append(" or workPost like '|").append(arr[i]).append("|'"); } } sb.append(")"); } } if (!TextUtils.isEmpty(mobile)) { String[] arr = mobile.split(","); if ((boolean) ivMobile.getTag()) { sb.append(" and mobile in (").append(stringToString(arr)).append(")"); } else { for (int i = 0; i < arr.length; i++) { sb.append(" and mobileNumber in ('").append(stringToString(arr)).append("')"); if (i == 0) { sb.append(" and (left(mobileNumber, ").append(arr[i].length()).append(") = '").append(arr[i]).append("'"); } else { sb.append(" or left(mobileNumber, ").append(arr[i].length()).append(") = '").append(arr[i]).append("'"); } } sb.append(")"); } } if (!TextUtils.isEmpty(telePhone)) { String[] arr = telePhone.split(","); if ((boolean) ivTelephone.getTag()) { sb.append(" and officeNumber in (").append(stringToString(arr)).append(")"); } else { for (int i = 0; i < arr.length; i++) { if (i == 0) { sb.append(" and (left(officeNumber, ").append(arr[i].length()).append(") = '").append(arr[i]).append("'"); } else { sb.append(" or left(officeNumber, ").append(arr[i].length()).append(") = '").append(arr[i]).append("'"); } } sb.append(")"); } } if (!TextUtils.isEmpty(email)) { String[] arr = email.split(","); if ((boolean) ivEmail.getTag()) { sb.append(" and email in (").append(stringToString(arr)).append(")"); } else { for (int i = 0; i < arr.length; i++) { if (i == 0) { sb.append(" and (email LIKE '|").append(arr[i]).append("|'"); } else { sb.append(" or email LIKE '|").append(arr[i]).append("|'"); } } sb.append(")"); } } Intent intent = new Intent(); String sql = sb.toString().replaceFirst(" and", ""); intent.putExtra("sql", sql); setResult(123, intent); finish(); } //切換checkbox狀態(tài) public void switchExact(ImageView view) { view.setTag(!(boolean) view.getTag()); if ((boolean) view.getTag()) { view.setImageResource(R.drawable.ic_check_box_black_24dp); } else { view.setImageResource(R.drawable.ic_check_box_outline_blank_black_24dp); } } private String stringToString(String[] array) { StringBuilder end = new StringBuilder(""); for (String s : array) { end.append("'").append(s).append("',"); } return end.toString().substring(0, end.length() - 1); } @Override //回傳值的處理 protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { if (requestCode == 15476 && resultCode == RESULT_OK) { ArrayList<ClsNormalUser> users = data.getParcelableArrayListExtra("users"); StringBuilder sb = new StringBuilder(); for (ClsNormalUser user : users) { sb.append(user.getCName()).append(","); } tvUserName.setText(sb.toString()); } if (requestCode == 13685 && resultCode == RESULT_OK) { ClsNormalUser user = data.getParcelableExtra("user"); tvCreator.setText(user.getCName()); } super.onActivityResult(requestCode, resultCode, data); } }
效果如圖
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Android中 TeaScreenPopupWindow多類型篩選彈框功能的實例代碼
- Android實現(xiàn)簡單下拉篩選框
- Android可篩選的彈窗控件CustomFiltControl
- android仿京東商品屬性篩選功能
- 可支持快速搜索篩選的Android自定義選擇控件
- Android 仿京東側(cè)滑篩選實例代碼
- Android Handler之消息循環(huán)的深入解析
- Android開發(fā)筆記之:消息循環(huán)與Looper的詳解
- Android實現(xiàn)圖片循環(huán)播放的實例方法
- RecyclerView+SnapHelper實現(xiàn)無限循環(huán)篩選控件
相關文章
Android中關于Notification及NotificationManger的詳解
本篇文章小編為大家介紹,Android中關于Notification及NotificationManger的詳解。需要的朋友參考下2013-04-04ubuntu用wifi連接android調(diào)試程序的步驟
這篇文章主要介紹了ubuntu用wifi連接android調(diào)試程序的步驟,需要的朋友可以參考下2014-02-02Android webview 內(nèi)存泄露的解決方法
這篇文章主要介紹了Android webview 內(nèi)存泄露的解決方法的相關資料,需要的朋友可以參考下2017-07-07