如标题所示
在最初不输入任何关键字的情况下,我能够看到RecyclerView的所有结果,但是当尝试从RecyclerView中搜索项目列表时,每次我输入任何关键字都会返回是RecyclerView的第一个(也是唯一一个)结果。 找不到与此主题类似的内容,因此在此处发布,将不胜感激。 :D 我对android编程了解不多。
CollegeSearch.java
public class CollegeSearch extends AppCompatActivity implements RcycAdapter.OnItemClickListener{@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_college_search);
//setting the toolbar
Toolbar toolbar=findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Rcycle6=findViewById(R.id.Rcycle6);
//for good performance
Rcycle6.setHasFixedSize(true);
//for setting horizontal view for the recycler view
LinearLayoutManager hlinearlayout3 = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false);
Rcycle6.setLayoutManager(hlinearlayout3);
//get the image url and university name from db
requestQueue6 = Volley.newRequestQueue(this);
//Set the Data Adapter
dataList6 = new ArrayList<>();
parseJSON6();
etSearch2=findViewById(R.id.etSearch2);
etSearch2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
filter(s.toString());
}
});
}public void filter(String text) {
ArrayList<DataFetchCollegeDetails> filteredList = new ArrayList<>();
for (DataFetchCollegeDetails item : dataList6) {
if (item.getName().toLowerCase().contains(text.toLowerCase())) {
filteredList.add(item);
}
}
example6Adapter= new RcycAdapter(this, filteredList);
example6Adapter.filterList(filteredList);
}public void parseJSON6(){
//logic
example6Adapter= new RcycAdapter(CollegeSearch.this,dataList6);
Rcycle6.setAdapter(example6Adapter);
example6Adapter.setOnItemClickListener(CollegeSearch.this);
requestQueue6.add(request);
}
}
RcycAdapter.java
public void filterList(ArrayList<DataFetchCollegeDetails> filteredList) {
dataList = filteredList;
notifyDataSetChanged();
}