当与EditText一起使用来搜索RecyclerView时,RecyclerView的DataSet只有1个结果(对于任何关键字)

时间:2019-01-09 11:25:06

标签: android android-recyclerview dataset searchview

如标题所示

在最初不输入任何关键字的情况下,我能够看到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();
}

0 个答案:

没有答案