【问题标题】:Search filter with normal TextView file使用普通 TextView 文件的搜索过滤器
【发布时间】:2019-11-27 06:03:47
【问题描述】:

这是我的代码。我想添加过滤器,以便当我使用“教师”搜索时,结果仅从 TextView 下方显示教师。它没有任何listview arraylist。怎么可能???。

        <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" 
        android:orientation="Vertical"
        android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView android:id="@+id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_parent" 
    android:capitalize="characters" 
    android:text="University" />

        <TextView android:id="@+id/text2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_parent" 
    android:capitalize="characters" 
    android:text="School" />

        <TextView android:id="@+id/text3" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_parent" 
    android:capitalize="characters" 
    android:text="Madam" />

        <TextView android:id="@+id/text4" 
    android:layout_width="match_parent" 
android:layout_height="wrap_parent" 
android:capitalize="characters" 
android:text="Teacher" />

        <TextView android:id="@+id/text5"
 android:layout_width="match_parent" 
android:layout_height="wrap_parent" 
android:capitalize="characters" 
android:text="Master" />

        </LinearLayout>

【问题讨论】:

  • 您可以尝试使用自动完成文本视图

标签: android filter


【解决方案1】:

您的问题缺少信息。建议在您可以提供的描述中发布您的问题。无论如何,让我们开始吧。如果您对搜索和过滤有疑问,首先可以在这里提出几个问题。
-> 这是什么类型的app 或简单程序?
-> 您正在搜索一些数据,但来自哪里?
-> 你想搜索什么类型的教师信息? 姓名id、工资还是什么?
你必须让你的想法像:嘿!我正在寻找老师,但是什么?姓名或他/她的工资或什么?从哪里来?将此逻辑转换为代码
您可以通过这些方式实现搜索
-> 在工具栏中添加搜索
-> 使用自定义Edit text 使其充当seachView
-> 最后但同样重要的是,您可以使用 recyclerView filter 过滤项目,也可以使用 room persistence 查询来搜索项目。幸运的是,我在几天或几天前也面临同样的问题。现在,我将为您提供链接,我是如何使用工具栏或不使用工具栏实现 searchView 的,什么最适合我让它工作,什么对我来说是更好的决定,顺便说一下我更喜欢使用自定义 edittext。无论如何,这里是:
MVVM Recyclerview Livedata Room SearchView
请阅读此链接中从问题到 cmets 再到答案的所有内容,我假设您对 MVVM Room persistence RecyclerView 有基本的了解。
而这个只是recyclerView和filter
https://www.androidhive.info/2017/11/android-recyclerview-with-search-filter-functionality/
我希望这会有所帮助,Thankyou()。

【讨论】:

    【解决方案2】:

    首先,您应该练习一些最佳实践来做这些事情,但我会根据您的要求提供解决方案。看下面的代码

    XML:

        `<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context=".MainActivity">
        <EditText
            android:id="@+id/edittext_search"
            android:hint="Search Here"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
        <TextView
            android:id="@+id/tvUniversity"
            android:visibility="gone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="University" />
    
        <TextView
            android:id="@+id/tvSchool"
            android:visibility="gone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="School" />
    
        <TextView
            android:id="@+id/tvMadam"
            android:visibility="gone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Madam" />
    
        <TextView
            android:id="@+id/tvTeacher"
            android:visibility="gone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Teacher" />
    
        <TextView
            android:id="@+id/tvMaster"
            android:visibility="gone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Master" />
    
    </LinearLayout>`
    

    Java:

    public class MainActivity extends AppCompatActivity {
        TextView _teacher,_university,_school,_master,_madam;
        EditText search;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            search = findViewById(R.id.edittext_search);
            _teacher = findViewById(R.id.tvTeacher);
            _university = findViewById(R.id.tvUniversity);
            _school = findViewById(R.id.tvSchool);
            _master = findViewById(R.id.tvMaster);
            _madam = findViewById(R.id.tvMadam);
    
            search();
        }
    
        private void search() {
            search.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
                //Hide all view first
                _teacher.setVisibility(View.GONE);
                _university.setVisibility(View.GONE);
                _school.setVisibility(View.GONE);
                _madam.setVisibility(View.GONE);
                _master.setVisibility(View.GONE);
    
                if(charSequence.toString().toLowerCase().equals("teacher")){
                    _teacher.setVisibility(View.VISIBLE);
                }else if(charSequence.toString().toLowerCase().equals("university")){
                    _university.setVisibility(View.VISIBLE);
                }else if(charSequence.toString().toLowerCase().equals("school")){
                    _school.setVisibility(View.VISIBLE);
                }
    
    
                @Override
                public void afterTextChanged(Editable editable) {
                }
            });
        }
    }
    

    【讨论】:

    • 我想将结果显示为 Value..Teacher ..但它只是一个示例... .. item ... 就像老师其他值过滤器一样
    • 我已经更新了我的答案。可以吗?如果是,请接受我的回答,否则再问我一次,我会再回答一次
    猜你喜欢
    • 2016-05-27
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    相关资源
    最近更新 更多