搜索、模糊查询

一:创建Database继承SQLiteOpenHelper,在第一次创建数据库时将模拟数据插入数据库

package com.example.test.utils;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class Database extends SQLiteOpenHelper {
    private SQLiteDatabase db;

    public Database(Context context) {
        super(context, "test", null, 1);
        db = getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table if not exists user(" +
                "number int primary key," +
                "name varchar(32)," +
                "English_name varchar(32)," +
                "gender int," +
                "age int)"
        );
        db.execSQL("insert into user values(001, '张三', 'zhangsan', 1, 23)");
        db.execSQL("insert into user values(002, '翠花', 'cuihua', 2, 18)");
        db.execSQL("insert into user values(003, '李四', 'lisi', 1, 21)");
        db.execSQL("insert into user values(004, '熊大', 'xiongda', 1, 56)");
        db.execSQL("insert into user values(005, '王五', 'wangwu', 1, 20)");
        db.execSQL("insert into user values(006, '赵六', 'zhaoliu', 1, 19)");
        db.execSQL("insert into user values(007, '姬七', 'jiqi', 1, 18)");
        db.execSQL("insert into user values(008, '熊二', 'xionger', 1, 50)");
        db.execSQL("insert into user values(009, '达瓦', 'dawa', 1, 87)");
        db.execSQL("insert into user values(010, '如花', 'ruhua', 2, 25)");
        db.execSQL("insert into user values(011, '光头强', 'guangtouqiang', 1, 34)");
        db.execSQL("insert into user values(012, '张飞', 'zhangfei', 1, 45)");
        db.execSQL("insert into user values(013, '曹操', 'caocao', 1, 50)");
        db.execSQL("insert into user values(014, '刘备', 'liubei', 1, 48)");
        db.execSQL("insert into user values(015, '李白', 'libai', 1, 56)");
        db.execSQL("insert into user values(016, '韩信', 'hanxin', 1, 47)");
        db.execSQL("insert into user values(017, '莫邪', 'moye', 2, 23)");
        db.execSQL("insert into user values(018, '妲己', 'daji', 2, 999)");
        db.execSQL("insert into user values(019, '猪八戒', 'zhubajie', 1, 999)");
        db.execSQL("insert into user values(020, '夏侯惇', 'xiahoudun', 1, 55)");
        db.execSQL("insert into user values(021, '刘禅', 'liushan', 1, 16)");
        db.execSQL("insert into user values(022, '貂蝉', 'diaochan', 2, 14)");
        db.execSQL("insert into user values(023, '西施', 'xishi', 2, 15)");
        db.execSQL("insert into user values(024, '杨玉环', 'yangyuhuan', 2, 18)");
        db.execSQL("insert into user values(025, '王昭君', 'wangzhaojun', 2, 19)");
        db.execSQL("insert into user values(026, '小乔', 'xiaoqiao', 2, 14)");
        db.execSQL("insert into user values(027, '大乔', 'daqiao', 2, 18)");
        db.execSQL("insert into user values(028, '甄姬', 'zhenji', 2, 24)");
        db.execSQL("insert into user values(029, '孙尚香', 'sunshangxiang', 2, 39)");
        db.execSQL("insert into user values(030, '女娲', 'nvwa', 2, 999)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

二:主界面布局文件activity_10.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Activity10"
    android:padding="20dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="搜索、模糊查询"
            android:textSize="23sp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:background="#C7EDE4"
            android:onClick="ToSearch"
            android:text="高级搜索" />
    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="50dp"
        android:layout_marginBottom="70dp"
        android:orientation="vertical"
        android:focusable="true"
        android:focusableInTouchMode="true">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/edit"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginRight="50dp"
                android:hint="请输入英文名"
                android:inputType="text"
                android:paddingLeft="15dp"
                android:paddingRight="15dp" />

            <ImageView
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_alignParentRight="true"
                android:src="@mipmap/search"
                android:onClick="Search"/>
        </RelativeLayout>
        <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <Button
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="返回"
        android:layout_alignParentBottom="true"/>
</RelativeLayout>

主界面Activity10 

package com.example.test;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import com.example.test.tools.ShowAdapter;
import com.example.test.utils.Database;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Activity10 extends AppCompatActivity {
    public static final int REQUEST_CODE = 1;
    private EditText edit;
    private ListView listView;
    private String text;
    private String sql = "select * from user";
    private String sql_search = "";
    // 是否第一次进入界面
    private boolean isOne = true;
    // 是否高级搜索
    private boolean search = false;
    private ArrayList numbers = new ArrayList();
    private ArrayList names = new ArrayList();
    private ArrayList English_names = new ArrayList();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_10);

        initView();
    }

    private void initView() {
        Button btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });

        edit = findViewById(R.id.edit);
        listView = findViewById(R.id.listView);
    }

    @Override
    protected void onStart() {
        super.onStart();
        if (search) {
            Show(sql_search, isOne);
            search = false;
        } else {
            Show(sql, isOne);
        }
    }

    @Override
    protected void onStop() {
        super.onStop();
        edit.setText("");
    }

    /**
     * 展示listView信息到指定位置
     * @param sql
     */
    private void Show(String sql, boolean b) {
        Database database = new Database(Activity10.this);
        SQLiteDatabase db = database.getReadableDatabase();
        List<Map<String, String>> list = new ArrayList<>();
        Cursor cursor = db.rawQuery(sql, null);
        while (cursor.moveToNext()) {
            Map<String, String> map = new HashMap<>();
            @SuppressLint("Range") String number = cursor.getString(cursor.getColumnIndex("number"));
            @SuppressLint("Range") String name = cursor.getString(cursor.getColumnIndex("name"));
            @SuppressLint("Range") String English_name = cursor.getString(cursor.getColumnIndex("English_name"));
            @SuppressLint("Range") String gender = cursor.getString(cursor.getColumnIndex("gender"));
            @SuppressLint("Range") String age = cursor.getString(cursor.getColumnIndex("age"));
            map.put("number", number);
            map.put("name", name);
            map.put("English_name", English_name);
            map.put("gender", gender);
            map.put("age", age);
            list.add(map);
        }
        cursor.close();
        ShowAdapter adapter = new ShowAdapter(Activity10.this, list);
        listView.setAdapter(adapter);
        if (b) {
            for (int i = 0; i < list.size(); i++) {
                numbers.add(list.get(i).get("number"));
                names.add(list.get(i).get("name"));
                if (i == 0) {
                    English_names.add("");
                    English_names.add(list.get(i).get("English_name"));
                } else {
                    English_names.add(list.get(i).get("English_name"));
                }
            }
            isOne = false;
        }
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(Activity10.this, list.get(position).get("name"), Toast.LENGTH_LONG).show();
            }
        });
    }

    /**
     * 跳转高级搜索界面
     * @param view
     */
    public void ToSearch(View view) {
        Intent intent = new Intent(Activity10.this, Search.class);
        intent.putStringArrayListExtra("numbers", numbers);
        intent.putStringArrayListExtra("names", names);
        intent.putStringArrayListExtra("English_names", English_names);
        startActivityForResult(intent, REQUEST_CODE);
    }

    /**
     * 搜索按钮点击事件
     * @param view
     */
    public void Search(View view) {
        // 点击搜索按钮后关闭软键盘
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(edit.getWindowToken(), 0);
        text = edit.getText().toString().trim();
        if (!TextUtils.isEmpty(text)) {
            String sql = "select * from user where English_name like '%" + text + "%'";
            Show(sql, isOne);
        } else {
            Show(sql, isOne);
            Toast.makeText(Activity10.this, "请输入搜索内容", Toast.LENGTH_LONG).show();
            edit.setText("");
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE && resultCode == Search.RESULT_CODE) {
            String number = data.getStringExtra("number");
            String name = data.getStringExtra("name");
            String English_name = data.getStringExtra("English_name");
            int gender = data.getIntExtra("gender", 0);
            String age = data.getStringExtra("age");
            StringBuilder sql = new StringBuilder("select * from user");
            if (!TextUtils.isEmpty(number)) {
                sql.append(" where number = '" + number + "'");
                if (!TextUtils.isEmpty(name)) {
                    sql.append(" and name = '" + name + "'");
                }
                if (!TextUtils.isEmpty(English_name)) {
                    sql.append(" and English_name = '" + English_name + "'");
                }
                if (gender != 0) {
                    sql.append(" and gender = '" + gender + "'");
                }
                if (!TextUtils.isEmpty(age)) {
                    sql.append(" and age = '" + age + "'");
                }
            } else {
                if (!TextUtils.isEmpty(name)) {
                    sql.append(" where name = '" + name + "'");
                    if (!TextUtils.isEmpty(English_name)) {
                        sql.append(" and English_name = '" + English_name + "'");
                    }
                    if (gender != 0) {
                        sql.append(" and gender = '" + gender + "'");
                    }
                    if (!TextUtils.isEmpty(age)) {
                        sql.append(" and age = '" + age + "'");
                    }
                } else {
                    if (!TextUtils.isEmpty(English_name)) {
                        sql.append(" where English_name = '" + English_name + "'");
                        if (gender != 0) {
                            sql.append(" and gender = '" + gender + "'");
                        }
                        if (!TextUtils.isEmpty(age)) {
                            sql.append(" and age = '" + age + "'");
                        }
                    } else {
                        if (gender != 0) {
                            sql.append(" where gender = '" + gender + "'");
                            if (!TextUtils.isEmpty(age)) {
                                sql.append(" and age = '" + age + "'");
                            }
                        } else {
                            if (!TextUtils.isEmpty(age)) {
                                sql.append(" where age = '" + age + "'");
                            }
                        }
                    }
                }
            }
            sql_search = sql.toString();
            search = true;
        }
    }
}

三:自定义展示listView适配器ShowAdapter

package com.example.test.tools;

import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;

import com.example.test.R;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class ShowAdapter extends BaseAdapter{
    private Context context;
    private List<Map<String, String>> list;
    private LayoutInflater inflater;

    public ShowAdapter(Context context, List<Map<String, String>> list) {
        this.context = context;
        this.list = list;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Holder holder = null;
        if (convertView == null) {
            holder = new Holder();
            convertView = inflater.inflate(R.layout.show, null);
            holder.number = convertView.findViewById(R.id.number);
            holder.name = convertView.findViewById(R.id.name);
            holder.English_name = convertView.findViewById(R.id.English_name);
            holder.age = convertView.findViewById(R.id.age);
            holder.gender = convertView.findViewById(R.id.gender);
            convertView.setTag(holder);
        } else {
            holder = (Holder) convertView.getTag();
        }
        holder.number.setText(list.get(position).get("number"));
        holder.name.setText(list.get(position).get("name"));
        holder.English_name.setText(list.get(position).get("English_name"));
        holder.age.setText(list.get(position).get("age"));
        if (list.get(position).get("gender").equals("1")) {
            holder.gender.setText("男");
        } else if (list.get(position).get("gender").equals("2")) {
            holder.gender.setText("女");
        }
        return convertView;
    }

    class Holder {
        TextView name;
        TextView English_name;
        TextView number;
        TextView age;
        TextView gender;
    }
}

自定义展示listView适配器的布局文件show.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/border"
        android:orientation="vertical"
        android:padding="15dp"
        android:gravity="center">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="编号:"
                    android:textSize="17sp"
                    android:textColor="#333"/>
                <TextView
                    android:id="@+id/number"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="17sp"
                    android:textColor="#333"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="姓名:"
                    android:textSize="17sp"
                    android:textColor="#333"/>
                <TextView
                    android:id="@+id/name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="17sp"
                    android:textColor="#333"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="英文名:"
                    android:textSize="17sp"
                    android:textColor="#333"/>
                <TextView
                    android:id="@+id/English_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="17sp"
                    android:textColor="#333"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="性别:"
                    android:textSize="17sp"
                    android:textColor="#333"/>
                <TextView
                    android:id="@+id/gender"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="17sp"
                    android:textColor="#333"/>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="年龄:"
                    android:textSize="17sp"
                    android:textColor="#333"/>
                <TextView
                    android:id="@+id/age"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="17sp"
                    android:textColor="#333"/>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

四:高级搜索(多条件精准查询)布局文件activity_search.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Search"
    android:orientation="vertical"
    android:gravity="center"
    android:padding="20dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="高级搜索"
            android:textSize="25sp"
            android:textColor="#333"
            android:layout_centerVertical="true"
            android:layout_centerHorizontal="true"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:background="#C7EDE4"
            android:onClick="Search"
            android:padding="5dp"
            android:text="搜索" />
    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="编号"
            android:textSize="20sp"
            android:textColor="#333"/>
        <EditText
            android:id="@+id/number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="20sp"
            android:textColor="#333"
            android:focusable="false"
            android:background="@drawable/border"
            android:padding="8dp"
            android:layout_marginLeft="5dp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="姓名"
            android:textSize="20sp"
            android:textColor="#333"/>
        <EditText
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="20sp"
            android:textColor="#333"
            android:focusable="false"
            android:background="@drawable/border"
            android:padding="8dp"
            android:layout_marginLeft="5dp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="英文名"
            android:textSize="20sp"
            android:textColor="#333"/>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/border"
            android:padding="8dp"
            android:layout_marginLeft="5dp">
            <Spinner
                android:id="@+id/English_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:textColor="#333"/>
        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别"
            android:textSize="20sp"
            android:textColor="#333"/>
        <RadioGroup
            android:id="@+id/gender"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/man"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男"
                android:textSize="20sp"
                android:textColor="#333"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
            <RadioButton
                android:id="@+id/woman"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女"
                android:textSize="20sp"
                android:textColor="#333"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
        </RadioGroup>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:focusable="true"
        android:focusableInTouchMode="true">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="年龄"
            android:textSize="20sp"
            android:textColor="#333"/>
        <EditText
            android:id="@+id/age"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:gravity="center"
            android:textSize="20sp"
            android:textColor="#333"
            android:padding="8dp"
            android:layout_marginLeft="5dp"/>
    </LinearLayout>

</LinearLayout>

高级搜索(多条件精准查询)界面Search

package com.example.test;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListPopupWindow;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;

import com.example.test.tools.NameAdapter;

import java.util.ArrayList;

public class Search extends AppCompatActivity {
    public static final int RESULT_CODE = 2;
    private EditText number;
    private EditText name;
    private EditText age;
    private Spinner English_name;
    private RadioGroup group;
    private ArrayList numbers = new ArrayList();
    private ArrayList names = new ArrayList();
    private ArrayList English_names = new ArrayList();
    private int gender = 0;
    private String english_name = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_search);

        initView();

        onClick();
    }

    private void initView() {
        number = findViewById(R.id.number);
        name = findViewById(R.id.name);
        age = findViewById(R.id.age);
        group = findViewById(R.id.gender);
        English_name = findViewById(R.id.English_name);

        numbers = getIntent().getStringArrayListExtra("numbers");
        names = getIntent().getStringArrayListExtra("names");
        English_names = getIntent().getStringArrayListExtra("English_names");
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(Search.this, android.R.layout.simple_list_item_1, English_names);
        English_name.setAdapter(adapter);
    }

    private void onClick() {
        // 自定义ListPopupWindow + EditText实现下拉框
        number.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ListPopupWindow window = new ListPopupWindow(Search.this);
                window.setAdapter(new ArrayAdapter<String>(Search.this, android.R.layout.simple_list_item_1, numbers));
                window.setAnchorView(number);
                window.setWidth(LinearLayout.LayoutParams.WRAP_CONTENT);
                window.setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
                window.setModal(true);
                window.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        number.setText(numbers.get(position).toString());
                        if (window != null) {
                            window.dismiss();
                        }
                    }
                });
                window.show();
            }
        });
        // 自定义弹出对话框
        name.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LayoutInflater inflater = (LayoutInflater) Search.this.getSystemService(LAYOUT_INFLATER_SERVICE);
                View layout = inflater.inflate(R.layout.name, null);
                ListView listView = layout.findViewById(R.id.name);
                NameAdapter adapter = new NameAdapter(Search.this, names);
                listView.setAdapter(adapter);
                AlertDialog.Builder builder = new AlertDialog.Builder(Search.this);
                builder.setView(layout);
                AlertDialog dialog = builder.create();
                dialog.show();
                listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        name.setText(names.get(position).toString());
                        if (dialog != null) {
                            dialog.dismiss();
                        }
                    }
                });
            }
        });
        group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                RadioButton button = findViewById(checkedId);
                String select = button.getText().toString();
                if (select.equals("男")) {
                    gender = 1;
                } else {
                    gender = 2;
                }
            }
        });
        English_name.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                english_name = English_names.get(position).toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
    }

    /**
     * 搜索按钮,将填写的信息传递到展示界面,并根据填写的条件进行精准搜索
     * @param view
     */
    public void Search(View view) {
        String numbered = number.getText().toString().trim();
        String named = name.getText().toString().trim();
        String aged = age.getText().toString().trim();
        Intent intent = new Intent();
        intent.putExtra("number", numbered);
        intent.putExtra("name", named);
        intent.putExtra("English_name", english_name);
        intent.putExtra("gender", gender);
        intent.putExtra("age", aged);
        setResult(RESULT_CODE, intent);
        finish();
    }
}

五:自定义对话框布局文件name.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名:"
        android:textSize="20sp"
        android:textColor="#333"
        android:textStyle="bold"/>
    <ListView
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

六:效果图

 

 

 

 

 

 

 

 

 

Spring Boot 是一个用于简化 Spring 应用开发的框架,它整合了许多常用的 Spring 库和其他第三方库。在 Spring Boot 应用中实现模糊查询通常涉及到使用 Spring Data JPA 或者 MyBatis 等数据访问技术。以下是使用 Spring Data JPA 实现模糊查询的一个基本示例: 首先,需要定义一个实体类(Entity)和相应的仓库接口(Repository),仓库接口继承自 Spring Data JPA 的 `JpaRepository`。然后,可以在接口中定义一个根据字段进行模糊查询的方法。 ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; // 其他字段和getter/setter方法 } public interface UserRepository extends JpaRepository<User, Long> { List<User> findByNameContaining(String name); } ``` 在这个例子中,`findByNameContaining` 方法会根据 `name` 字段进行模糊查询,它会转换成一个包含 LIKE 操作的 SQL 查询。 为了执行这个查询,你可以注入 `UserRepository` 并调用 `findByNameContaining` 方法: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> searchUsersByName(String name) { return userRepository.findByNameContaining(name); } } ``` 在控制器(Controller)中,你可以添加一个方法来处理模糊查询请求: ```java @RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping("/search") public ResponseEntity<List<User>> searchUsers(@RequestParam String name) { List<User> users = userService.searchUsersByName(name); return ResponseEntity.ok(users); } } ``` 当发送一个 GET 请求到 `/users/search` 并带上查询参数 `name` 时,就会调用 `searchUsers` 方法,它又会调用 `searchUsersByName` 来执行模糊查询,并返回结果。 需要注意的是,模糊查询通常会降低数据库查询的性能,特别是当使用通配符(如 `%`)在查询的开始位置时。在生产环境中,应当谨慎使用模糊查询,并考虑使用全文搜索引擎(如 Elasticsearch)来优化搜索性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qxnedy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值