这是我的代码。我想添加过滤器,以便当我使用“教师”搜索时,结果仅显示来自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>
您的信息不足。建议您,在问题上尽可能多地提供描述。无论如何,让我们开始吧。如果您想搜索和过滤,首先有几个问题可以在这里提出。->这是什么类型的[[app或简单程序?->您正在[[搜索一些数据,但是从哪里来的?->您想搜索哪种类型的教师信息? name,id,付款还是其他?您必须使自己的思想像:嘿!我正在搜索老师,但是呢?名称或他/她的工资或什么?从哪里来的?将此逻辑转换为代码您可以通过以下方式实现搜索->在工具栏中添加搜索->使用自定义Edit text
使其充当seachView
->最后但并非最不重要的一点,您可以使用recyclerView
filter
来过滤项目,也可以使用room persistence
查询来搜索项目。幸运的是,几天或几天前我都面临着同样的问题。现在,我将为您提供链接,说明我是如何使用工具栏或不使用工具栏来实现searchView的,以及通过我更喜欢使用自定义edittext
的方式对我来说最有效的方法是什么,对我来说是更好的决定。无论如何,这里是:MVVM Recyclerview Livedata Room SearchView请仔细阅读此链接中的所有内容,从问题到注释再到答案,我假设您已经掌握MVVM
Room persistence
RecyclerView
的基本知识。而且这只是recyclerView和过滤器https://www.androidhive.info/2017/11/android-recyclerview-with-search-filter-functionality/我希望这会有所帮助,谢谢()。
`<?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) {
}
});
}
}